Django模板層——模板語(yǔ)法
模板語(yǔ)法
1.變量
變量輸出語(yǔ)法
{ { var } }
當(dāng)模版引擎遇到一個(gè)變量,將計(jì)算這個(gè)變量,然后將結(jié)果輸出
變量名必須由字母、數(shù)字、下劃線(不能以下劃線開頭)和點(diǎn)組成
當(dāng)模版引擎遇到點(diǎn)("."),會(huì)按照下列順序查詢:
字典查詢,例如:foo["bar"]
屬性或方法查詢,例如:foo.bar
數(shù)字索引查詢,例如:foo[bar]
如果變量不存在, 模版系統(tǒng)將插入'' (空字符串)
在模板中調(diào)用方法時(shí)不能傳遞參數(shù)
2.標(biāo)簽
語(yǔ)法
{ % tag % }
作用
在輸出中創(chuàng)建文本
控制循環(huán)或邏輯
加載外部信息到模板中
{ % for ... in ... % } 循環(huán)邏輯 { % endfor % }
{ % if ... % } 邏輯1 { % elif ... % } 邏輯2 { % else % } 邏輯3 { % endif % }
{ % comment % } 多行注釋 { % endcomment % }
{ % include "base/index.html" % }
{ % url 'name' p1 p2 % }
{ % csrf_token % }
3.過濾器
語(yǔ)法:
{ { 變量|過濾器 } },例如{ { name|lower } },表示將變量name的值變?yōu)樾戄敵?/p>
使用管道符號(hào) (|)來應(yīng)用過濾器
通過使用過濾器來改變變量的計(jì)算結(jié)果
關(guān)閉HTML自動(dòng)轉(zhuǎn)義
{ { data|safe } }
可以在if標(biāo)簽中使用過濾器結(jié)合運(yùn)算符
if list1|length > 1
過濾器能夠被“串聯(lián)”,構(gòu)成過濾器鏈
name|lower|upper
過濾器可以傳遞參數(shù),參數(shù)使用引號(hào)包起來
list|join:", "
default:如果一個(gè)變量沒有被提供,或者值為false或空,則使用默認(rèn)值,否則使用變量的值
value|default:"什么也沒有"
date:根據(jù)給定格式對(duì)一個(gè)date變量格式化
value|date:'Y-m-d'
官方文檔內(nèi)置過濾器參考:
網(wǎng)址:https://docs.djangoproject.com/zh-hans/2.2/ref/templates/builtins/#ref-templates-builtins-filters
4.注釋
單行注釋
{# 注釋 #}
多行注釋
{% comment %} 多行注釋 {% endcomment %}
5.模板運(yùn)算
加
{ { value|add:10 } } note:value=5,則結(jié)果返回15
減
{ { value|add:-10 } } note:value=5,則結(jié)果返回-5,加一個(gè)負(fù)數(shù)就是減法了
乘
{ % widthratio 5 1 100 % } note:等同于:(5 / 1) * 100 ,結(jié)果返回500, withratio需要三個(gè)參數(shù),它會(huì)使用參數(shù)1/參數(shù)2*參數(shù)3的方式進(jìn)行運(yùn)算,進(jìn)行乘法運(yùn)算,使「參數(shù)2」=1
除
{ % widthratio 5 100 1 % } note:等同于:(5 / 100) * 1,則結(jié)果返回0.05,和乘法一樣,使「參數(shù)3」= 1就是除法了。
6.自定義 標(biāo)簽 或 過濾器
首先在當(dāng)前應(yīng)用目錄下創(chuàng)建一個(gè)templatetags模板標(biāo)簽?zāi)夸洠ㄗh內(nèi)放一個(gè)__init__.py的空文件
然后在templatetags目錄下創(chuàng)建一個(gè)模板標(biāo)簽文件pagetag.py,具體代碼如下:
templatetags ├── pagetag.py ----------------pagetag.py------------------------- from django import template register = template.Library() # 自定義過濾器(實(shí)現(xiàn)大寫轉(zhuǎn)換) @register.filter def myupper(val): # print ('val from template:',val) return val.upper() # 自定義標(biāo)簽(實(shí)現(xiàn)減法計(jì)算) #from django.utils.html import format_html @register.simple_tag def jian(a,b): res = int(a) - int(b) return res
使用:在模板文件使用?{ % load pagetag % }
6. 自定義標(biāo)簽
{% load pagetag %} 大寫:{{name|myupper}}相減:{% jian m1 m2 %}
Django
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。