Python模板的使用詳細講解
一 模板語法傳值
方式一:
# urls.py path('template', views.template)
# views.py def template(request): name = "jasper" age = "18" return render(request, 'template.html', {"name": name, "age": age})
<p>姓名:{{ name }} 年齡:{{ age }}</p>
方式二:關(guān)鍵字locals
def template(request): name = "jasper" age = "18" return render(request, 'template.html', locals())
傳值范圍:
- 基本數(shù)據(jù)類型直接傳遞使用。
- 函數(shù)名的傳遞會自動加括號執(zhí)行并展示函數(shù)返回值(如果函數(shù)需要參數(shù),則不會執(zhí)行,也不會展示),模板語法不支持有參函數(shù)。
- 類名的傳遞也會自動加括號產(chǎn)生對象。
- 對象的傳遞則直接引用。
二 過濾器
add
{{ value|add:"2" }}
如果 value 是 4,那么輸出將是 6。
這個過濾器將首先嘗試將兩個值強制轉(zhuǎn)為整數(shù)。如果失敗了,它將嘗試將兩個值加在一起。這對某些數(shù)據(jù)類型(字符串、列表等)有效,而對其他類型則失敗。如果失敗,結(jié)果將是一個空字符串。
capfirst
{{ value|capfirst }}
將值的第一個字符大寫。如果第一個字符不是字母,這個過濾器就沒有效果。
如果 value 是 “django”,則輸出為 “Django”。
center
在給定寬度的字段中使數(shù)值居中。
"{{ value|center:"15" }}"
如果 value 是 “Django”,輸出將是 " Django "。
cut
從給定的字符串中刪除參數(shù)的所有值。
{{ value|cut:" " }}
如果 value 是 “String with spaces”,輸出將是 “Stringwithspaces”。
date
根據(jù)給定的格式設(shè)置日期。
例子:
{{ value|date:"D d M Y" }}
如果 value 是一個 datetime 對象(例如,datetime.datetime.datetime.now() 的結(jié)果),輸出將是字符串 ‘Wed 09 Jan 2008’。
傳遞的格式可以是預(yù)定義的 DATE_FORMAT、DATETIME_FORMAT、SHORT_DATE_FORMAT 或 SHORT_DATETIME_FORMAT, 或者是使用上表中顯示的格式指定器的自定義格式。請注意,預(yù)定義的格式可能會根據(jù)當前的 locale 而有所不同。
假設(shè) USE_L10N 為 True 和 LANGUAGE_CODE 為例如 “es”,那么對于:
{{ value|date:"SHORT_DATE_FORMAT" }}
輸出將是字符串 “09/01/2008” (Django 自帶的 “SHORT_DATE_FORMAT” 格式指定符是 “d/m/Y”)。
當不使用格式字符串時,使用 DATE_FORMAT 格式指定器。假設(shè)設(shè)置與前一個例子相同:
{{ value|date }}
輸出 9 de Enero de 2008 (DATE_FORMAT’ 格式指定符為 r’j\d\e F\d\e Y’)。“d” 和 “e” 都是反斜杠,因為否則每一個都是一個格式字符串,分別顯示日期和時區(qū)名稱。
你可以將 date 與 time 過濾器結(jié)合起來,以呈現(xiàn)一個 datetime 值的完整表示。例如:
{{ value|date:"D d M Y" }} {{ value|time:"H:i" }}
default
如果值為 False,則使用給定的默認值。否則,使用該值。 例子:
{{ value|default:"nothing" }}
如果 value 是 “” (空字符串),輸出將是 nothing。
更多內(nèi)置過濾器請查看官方文檔:https://docs.djangoproject.com/zh-hans/4.1/ref/templates/builtins/#ref-templates-builtins-filters
三 標簽
參考官方文檔:https://docs.djangoproject.com/zh-hans/4.1/ref/templates/builtins/#ref-templates-builtins-filters
四 自定義模板標簽和過濾器
Django 模板語言包含了很多 內(nèi)置 tags 和 filters,設(shè)計目的是滿足應(yīng)用需要占位邏輯需求。極少情況下,你可能發(fā)現(xiàn)需要的功能未被核心模板集覆蓋。你能通過 Python 代碼自定義 tags 和 filters 擴展集成模板引擎,通過 {% load %} 標簽使其可用。
該應(yīng)用應(yīng)包含一個 templatetags 目錄,與 models.py, views.py 等同級。若該目錄不存在,創(chuàng)建它——不要忘了用 init.py 文件確保目錄被視作一個 Python 包。
自定義的 tags 和 filters 會保存在模塊名為 templatetags 的目錄內(nèi)。模塊文件的名字即稍候你用來加載 tags 的名字,所以小心不要采用一個可能與其它應(yīng)用自定義的 tags 和 filters 沖突的名字。
為了使 {% load %} 標簽生效,包含自定義標簽的應(yīng)用必須包含在 INSTALLED_APPS 中。這是個安全特性:它允許你在一個主機上持有多個模板庫,而不是讓每個 Django 安裝都能訪問所有的庫。
我們并未限制放入 templatetags 包中的模塊數(shù)量。只需牢記 {% load %} 語句會加載名字指定 Python 模塊的 tags/filters,而不是應(yīng)用。
要成為一個可用的 tag 庫,模塊必須包含一個名為 register 的模塊級變量,它是一個 template.Library 實例。所有的 tags 和 filters 均在其中注冊。所以,在模塊的開始,輸入以下內(nèi)容:
from django import template register = template.Library()
4.1 自定義過濾器
@register.filter(name='myfilter') def my_add(a, b): return a + b
4.2 自定義標簽函數(shù)
@register.simple_tag(name='mt') def func(a, b, c, d): return a + b + c + d
4.3 自定義inclusion_tag
@register.inclusion_tag(filename='it.html') def index(n): html = [] for i in range(n): html.append('第%s頁'%i) return locals()
參考官方文檔:https://docs.djangoproject.com/zh-hans/4.1/howto/custom-template-tags/
五 模板的繼承
# 在html頁面打上標記
{% block 名字 %}
html標簽
{% endblock %}# 擴展html界面
{% extends 'html文件' %}{% block 名字 %}
html標簽
{% endblock %}# 一般情況下模板中至少應(yīng)該有三個區(qū)域
css、js、content
子板中還可以使用母板的內(nèi)容 {{ block.super }}
六 模板的導(dǎo)入
將html頁面的某個部分當做模塊的形式導(dǎo)入使用
{% include 'menu.html' %}
到此這篇關(guān)于Python模板的使用詳細講解的文章就介紹到這了,更多相關(guān)Python模板內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pandas實現(xiàn)將dataframe滿足某一條件的值選出
今天小編就為大家分享一篇pandas實現(xiàn)將dataframe滿足某一條件的值選出,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06手把手教你快速安裝gpu版本的pytorch(詳細圖文教程)
在Windows?10上安裝PyTorch時,通常默認安裝的是CPU版本,且下載速度較慢,本文提供了一個詳細的安裝指南,包括如何檢查CUDA版本、選擇合適的PyTorch、torchvision和torchaudio版本,并通過pip而非conda進行安裝,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2024-09-09Python接口自動化之cookie、session應(yīng)用詳解
本文主要介紹cookie、session原理及在自動化過程中如何利用cookie、session保持會話狀態(tài)的應(yīng)用,有需要的朋友可以參考下,希望可以有所幫助2021-08-08python使用ctypes庫調(diào)用DLL動態(tài)鏈接庫
這篇文章主要介紹了python如何使用ctypes庫調(diào)用DLL動態(tài)鏈接庫,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2020-10-10基于Python實現(xiàn)一個簡易的數(shù)據(jù)管理系統(tǒng)
為了方便的實現(xiàn)記錄數(shù)據(jù)、修改數(shù)據(jù)沒有精力去做一個完整的系統(tǒng)去管理數(shù)據(jù)。因此,在python的控制臺直接實現(xiàn)一個簡易的數(shù)據(jù)管理系統(tǒng),包括數(shù)據(jù)的增刪改查等等。感興趣的可以跟隨小編一起學(xué)習(xí)一下2021-12-12Blender Python編程創(chuàng)建發(fā)光材質(zhì)示例詳解
這篇文章主要為大家介紹了Blender Python編程創(chuàng)建發(fā)光材質(zhì)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08