$Djangon模板層---變數 過濾器 標籤 |自定義(模板過濾器,標籤)
1 模版語法之變數:詳見原始碼
-{{ 變數 }}:******重要******{#相當於print了該變數#}
-深度查詢---->統一都用句點符 .
2 模版之過濾器
-語法:{{第一個引數|過濾器名字:第二個引數}}
-常用過濾器:(詳細用法見原始碼)
-length
-default
-slice
-date
-filesizeformat
-truncatechars
-truncatewords
-safe
-add
3 模版之標籤
-{% 標籤 %}
-for:forloop:物件(裡面有好多東西:parentloop,last,first,counter....)忘記的話, 自己列印一下
empty:被迴圈的物件是空,才走它
for迴圈可以巢狀,也可以用if
-if:
{% if forloop.first %}
<p>第一次的我 </p>
{% elif forloop.last %}
<p>最後的我 </p>
{% else %}
<p>{{ foo }}</p>吧
{% endif %}
-with:重新命名,應用在變數名過長
********都要有結束********
4 自定義標籤和過濾器
--***標籤不能用在if判斷,過濾器,可以用在if判斷
-自定義過濾器
-1 先app是不是已經在setting中註冊
-2 在app下建立一個templatetags(****名字不能變***)的資料夾(模組)
-3 在模組下建立一個py檔案,名字隨意:mytag.py
-4 # 第一步,匯入template
from django.template import Library
# 第二步,定義一個叫register的變數=template.Library()
register = Library()
-5 寫一個函式,用@register.filter(name='yyy')裝飾一下(可以指定別名)
def str_add(str1, str2): #一定要有返回值
# 業務邏輯很複雜
return str1 + str2
-6 在模板裡:(新定定義的標籤,過濾器,都要重啟程式)
-{% load mytag %}
-{{'lqz'|str_add:'nb'}}
-自定義標籤:
-1-4:前4步,根過濾器的定義完全一樣
-5 只是裝飾器不一樣
@register.simple_tag()
def add_nb(value):
return value+'nb'
-6 在模板裡:(多個引數,以空格區分)
-{% load mytag %}
-{% add_nb 'lqz'%}