官方文檔html
Django模板中只須要記兩種特殊符號:python
{{ }} 和 {% %}django
{{ }} 表示變量,在模板渲染的時候替換成值安全
{% %} 表示邏輯相關的操做.app
{{ 變量名}}ide
變量名由字母數字和下劃線組成.函數
點(.) 在模板語言中有特殊的含義,用來獲取對象的相應屬性值.spa
def template_test(request): l = [11, 22, 33] d = {"name": "alex"} 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", {"l": l, "d": d, "person_list": person_list})
{# 取l中的第一個參數 #} {{ l.0 }} {# 取字典中key的值 #} {{ d.name }} {# 取對象的name屬性 #} {{ person_list.0.name }} {# .操做只能調用不帶參數的方法 #} {{ person_list.0.dream }}
注意!!!!!!翻譯
當模板系統遇到一個(.)時,會按照以下的順序去查詢code
1,在字典中查詢
2.屬性或者方法
3.數字索引
翻譯過來的意思是過濾器,用來修改變量的顯示結果
語法: {{ value|filter_name:參數}}
'|' 左右沒有空格沒有空!!!!!!!!!!!!!
default
{{ value | default:"nothing"}}
若是value值沒傳的話就顯示nothing
注意:TEMPLATES的OPTIONS能夠增長一個選項:string_if_invalid:'找不到',能夠替換default的做用.
fiesizeformat
將值格式化爲一個'人類可讀的' 文件尺寸(例如'13KB','4.1MB','102 bytes',等等 )
例如
{{ value|filesizeformat}}
若是value 是123456789,輸出將會是117.7MB.
add
給變量加參數
{{value|add:'2'}}
value是數字4,則輸出結果爲6.
{{first|add:second}}
若是first[1,2,3] ,second是[4,5,6],那輸出結果就是[1,2,3,4,5,6]
lower
小寫
{{value|lower}}
upper
大寫
{{value|upper}}
title
標題
{{value|title}}
ljust
左對齊
"{{value|ljust:"10"}}"
center
居中
"{{value|center:"15"}}"
length
{{value|length}}
返回value的長度,如 value=['a','b','c','d']的話,就顯示4
slice
切片
{{value|slice:"2:-1"}}
first
取第一個元素
{{value|first}}
last
取最後一個元素
{{value|last}}
join
使用字符串拼接列表,和python的str.join(list)同樣
{{value|join:"//"}}
truncatechars
若是字符串字符多餘指定的字符數量,那麼會被截斷.截斷的字符串將以可翻譯的省略號序列("...")結尾.
參數:截斷的字符數
{{value|truncatechars:9}}
date
日期格式化
{{value|data:"Y-m-d H:i:s"}}
safe
Django的模板中會對HTML標籤和JS等語法標籤進行自動轉義,緣由顯而易見,這樣是爲了安全。可是有的時候咱們可能不但願這些HTML元素被轉義,好比咱們作一個內容管理系統,後臺添加的文章中是通過修飾的,這些修飾多是經過一個相似於FCKeditor編輯加註了HTML修飾符的文本,若是自動轉義的話顯示的就是保護HTML標籤的源文件。爲了在Django中關閉HTML的自動轉義有兩種方式,若是是一個單獨的變量咱們能夠經過過濾器「|safe」的方式告訴Django這段代碼是安全的沒必要轉義。
好比:
value = "<a href="#">點我</a>"
{{value|safe}}
自定義過濾器只是帶有一個或兩個參數的Python函數:
例如,在過濾器{{var | foo:"bar"}}中,過濾器foo將傳遞變量var和參數"bar"
自定義filter代碼文件擺放位置:
app01/ __init__.py models.py templatetags/ # 在app01下面新建一個package package __init__.py app01_filters.py # 建一個存放自定義filter的py文件 views.py
編寫自定義filter
from django import template register = template.Library() @register.filter def fill(value, arg): return value.replace(" ", arg) @register.filter(name="addSB") def add_sb(value): return "{} SB".format(value)
使用自定義filter
{# 先導入咱們自定義filter那個文件 #} {% load app01_filters %} {# 使用咱們自定義的filter #} {{ somevariable|fill:"__" }} {{ d.name|addSB }}