Django web框架之模板
阿新 • • 發佈:2017-10-24
引用 自定義標簽 and lib total http brush safe bar for ... empty
with
csrf_token
1 模板:
什麽是模板?
html+模板語法
模版包括在使用時會被值替換掉的 變量,和控制模版邏輯的 標簽。
2 模板語法:
1 變量:{{}}
深度查詢: 通過句點符號 . 過濾器 filter {{var|filter_name}}
2 標簽: {% tag %}
for if else
for標簽
遍歷每一個元素:
{% for person in person_list %} <p>{{ person.name }}</p> {% endfor %}
可以利用{% for obj in list reversed %} 反向完成循環。
遍歷一個字典:
{% for key,val in dic.items %} <p>{{ key }}:{{ val }}</p> {% endfor %}
for ... empty
for 標簽帶有一個可選的{% empty %} 從句,以便在給出的組是空的或者沒有被找到時,可以有所操作。
{% for person in person_list %} <p>{{ person.name }}</p> {% empty %} <p>sorry,no person here</p> {% endfor %}
if 標簽
{% if %}會對一個變量求值,如果它的值是“True”(存在、不為空、且不是boolean類型的false值),對應的內容塊會輸出。
{% if num > 100 or num < 0 %} <p>無效</p> {% elif num > 80 and num < 100 %} <p>優秀</p> {% else %} <p>湊活吧</p> {% endif %}
with
使用一個簡單地名字緩存一個復雜的變量,當你需要使用一個“昂貴的”方法(比如訪問數據庫)很多次的時候是非常有用的
例如:
{% with total=business.employees.count %} {{ total }} employee{{ total|pluralize }} {% endwith %}
csrf_token
這個標簽用於跨站請求偽造保護
3 自定義過濾器和標簽
步驟: 1 在settings中的INSTALLED_APPS,是否有當前應用 2 在應用中創建一個templatetags 3 在templatetags中創建py文件:mytag.py 4 在mytag.py中: 引入: from django import template from django.utils.safestring import mark_safe register = template.Library() #register的名字是固定的,不可改變 5 定義過濾器和標簽 @register.filter def multi(x,y): return x*y @register.simple_tag def multiTag(x,y,z): return x*y*z 6 在引用模板中導入:{% load myTag %} 7 調用: 過濾器: {{var|filter_name:參數}} # 參數只能是一個 標簽: {% simple_tag 參數1 參數2 ... %}
對比過濾器與自定義標簽的使用:
過濾器函數的參數只能有兩個,自定義標簽無參數限制
過濾器可以與邏輯標簽共同使用,比如if標簽。自定義標簽不可以。
Django web框架之模板