官方文件
只需要記兩種特殊符號:
}和 變數相關的用},邏輯相關的用。
}變數名由字母數字和下劃線組成。
點(.)在模板語言中有特殊的含義,用來獲取物件的相應屬性值。
幾個例子:
view中**:
def template_test(request):模板中支援的寫法:l = [11, 22, 33]
d =
class person(object):
def __init__(self, name, age):
self.name = name
self.age = age
def dream(self):
return "{} is dream...".format(self.name)
alex = person(name="alex", age=34)
egon = person(name="egon", age=9000)
eva_j = person(name="eva_j", age=18)
person_list = [alex, egon, eva_j]
return render(request, "template_test.html", )
}}語法: }}}
default
}如果value值沒傳的話就顯示nothing
length}
'|'左右沒有空格沒有空格沒有空格
返回value的長度,如 value=['a', 'b', 'c', 'd']的話,就顯示4.
filesizeformat
將值格式化為乙個 「人類可讀的」 檔案尺寸 (例如'13 kb'
,'4.1 mb'
,'102 bytes'
, 等等)。例如:
}如果 value 是 123456789,輸出將會是 117.7 mb。
slice切片
}date格式化
}safedjango的模板中會對html標籤和js等語法標籤進行自動轉義,原因顯而易見,這樣是為了安全。但是有的時候我們可能不希望這些html元素被轉義,比如我們做乙個內容管理系統,後台新增的文章中是經過修飾的,這些修飾可能是通過乙個類似於fckeditor編輯加註了html修飾符的文字,如果自動轉義的話顯示的就是保護html標籤的原始檔。為了在django中關閉html的自動轉義有兩種方式,如果是乙個單獨的變數我們可以通過過濾器「|safe」的方式告訴django這段**是安全的不必轉義。
比如:value = "點我"
}如果字串字元多於指定的字元數量,那麼會被截斷。截斷的字串將以可翻譯的省略號序列(「...」)結尾。
引數:截斷的字元數
}自定義過濾器只是帶有乙個或兩個引數的python函式:
例如,在過濾器}中,過濾器foo將傳遞變數var和引數「bar」。
自定義filter**檔案擺放位置(名字必須是templatetags的包):
__init__.py
models.py
__init__.py
views.py
編寫自定義filter
from django import template使用自定義filter for迴圈可用的一些引數:register = template.library()
@register.filter(name="cut")
def cut(value, arg):
return value.replace(arg, "")
@register.filter(name="addsb")
def add_sb(value):
return "{} sb".format(value)
variable
description
forloop.counter
當前迴圈的索引值(從1開始)
forloop.counter0
當前迴圈的索引值(從0開始)
forloop.revcounter
當前迴圈的倒序索引值(從1開始)
forloop.revcounter0
當前迴圈的倒序索引值(從0開始)
forloop.first
當前迴圈是不是第一次迴圈(布林值)
forloop.last
當前迴圈是不是最後一次迴圈(布林值)
forloop.parentloop
本層迴圈的外層迴圈
for ... empty
if,elif和
else
使用者人數:}當然也可以只有if和else黑名單數:}
沒有使用者
七座豪華suvif語句支援 and 、or、==、>、=、in、not in、is、is not判斷。黃包車
with
定義乙個中間變數
} employee}這個標籤用於跨站請求偽造保護。
在頁面的form表單裡面寫上
1. django的模板語言不支援連續判斷,即不支援以下寫法:...2. django的模板語言中屬性的優先順序大於方法
def xx(request):如上,我們在使用render方法渲染乙個頁面的時候,傳的字典d有乙個key是items並且還有預設的 d.items() 方法,此時在模板語言中:d =
return render(request, "xx.html", )
}缺省會取d的items key的值。
注意:我們通常會在母板中定義頁面專用的css塊和js塊,方便子頁面替換。在子頁面中在頁面最上方使用下面的語法來繼承母板。 通過在母板中使用
來定義"塊"。
在子頁面中通過定義母板中的block名來對應替換母板中相應的內容。
世情薄可以將常用的頁面內容如導航條,頁尾資訊等元件儲存在單獨的檔案中,然後在需要使用的地方按如下語法匯入即可。 引用js檔案時使用: 某個檔案多處被用到可以存為乙個變數人情惡雨送黃昏花易落
或者
多用於返回html**片段,此法比較常用,裝飾器接收操作的動態html內容,示例:templatetags/my_inclusion.py
from django import template
register = template.library()
@register.inclusion_tag('result.html')
def show_results(n):
n = 1 if n < 1 else int(n)
data = ["第{}項".format(i) for i in range(1, n+1)]
Django模板系統
如果在模板中需要解析變數使用 如果在模板中進行邏輯相關操作使用 注釋 單行注釋。在django的模板系統中變數使用的語法 當模版引擎遇到變數,就會用值替換掉變數。變數的命名可以是字母數字以及下劃線 的組合。變數名稱中不能有空格或標點符號。練習1 把html檔案中的 替換成 老王 html檔案 vie...
Django模板系統
匯入 template 和 context 類 from django.template import template,context def hello template request html 1.構建模板結構 template obj template html 2.建立渲染結構 cont...
Django 模板系統1(模板系統)
1 模板系統 template 向頁面中填充內容 1 模板系統常用符號 和 a 如果在模板中需要解析變數使用 b 如果在模板中進行邏輯相關操作使用 注釋 單行注釋 2 變數 在django 的模板系統中變數使用的語法 當模板引擎遇到變數,就會用值替換掉變數。變數的命名可以是字母數字以及下劃線 的組合...