Django-常用模板標簽及過濾器
阿新 • • 發佈:2017-10-24
tof cut mark 單詞 pac 繼承 信息 第一個 官方文檔 的使用 用來循環一個lsit、還可以使用resersed關鍵字來進行倒序遍歷,一般可以用if語句來判斷一個列表是否為空、在進行遍歷;還可以使用empty關鍵字來進行為空時候的跳轉。 > **for標簽中間可以使用forloop reversed - forloop.counter 當前循環技術 從1開始 - forloop.counter0當前循環計數 從0開始,標準索引方式 - forloop.revcounter 當前循環的倒數計數,從列表長度開始 - forloop.revcounter0 當前循環的倒數計數,從列表長度減一開始,標準索引方式 - forloop.first.bool值,判斷是不是循環的第一個元素 - forloop.last.bool值,判斷是不是循環的最後一個元素 forloop.parentloop 用在嵌套循環中,得到parent循環的引用,然後可以用一閃給的參數 4. {% cycle%} 在循環是淪落使用給定的字符串列表中的值 5. {##}單行註釋,{% comment%} 多行註釋
常用模板標簽及過濾器
模板的組成
HTML代碼+ 邏輯控制代碼
邏輯控制代碼的組成
1. 變量(使用雙大括號來引用變量){{ var_name}}
2. 標簽(tag)的使用(使用大括號和百分號的組成來表示使用tag)
{{% load staticfiles%}}
3. 過濾器(filter)的使用
{{ship_date|date:"F j, Y"}},ship_date變量傳遞給data過濾器,data過濾器通過使用"F j,Y"這幾個參數來格式化日期數據。"|"帶包類似Unix命令中的管道作用
常用標簽(tag)
1.** {% if %}**的使用 可以使用and、 or、not來組織你的邏輯。但不允許and和ir同事出現的條件語句中。新版本中支持{% elif%}這樣的語法 2. {% ifequal %}和{% ifnotequal %}的使用 比較是否相等,只限於簡單的類型,比如字符串、整數、小數的比較。列表、字典、元祖不支持 3. {% for %}
- {% csrf_token %} 生成csrf_token的標簽用於防止跨網站攻擊驗證
- {% debug %} 調用調試信息
- {% filter %} 將filter標簽圈定的內容執行過濾操作
- {% autoescape %} 自動轉義設置 10 {% firstof%} 輸出第一個值不等於False的變量
- {%load%} 加載標簽庫
- {%now%} 獲取當前時間
- {%spaceless%} 移除空格
- {%url%} 引入路由設置的地址
- {% varbatim%} 禁止render 禁止渲染
- {% with%} 用於簡單的變量緩存負責的變量名
常用過濾器(filter)
- add 給變量加上相應的值
- addslashes 給變量找那個引號前加上斜線
- capfirst 首字母大寫
- cut 從字符串中移除指定字符
- date 格式化日期字符串
- default 如果是False 就替換為設置的默認值,否則就使用本來的值
- default_if_none 如果值為None 就替換為默認值,否則就是用本來的值
- dicsort 按照設定參數(key)對應的value對列表進行排序
- dictsortreversed 和上面恰好相反
- divisibleby 是否能夠被某個數字整除,是的化返回True 否則返回False
- ** escape** 對字符串進行轉義
- escapejs 替換value中某些字符,以適應JAVASCRIPT和JSON 格式 13.** filesizeformat** 格式化文件大小顯示
- first 返回列表中的第一個值
- last 返回列表中最後一個值
- floatformat 格式化浮點數
- length 求子符串貨列表的長度
- length_is 比較字符串或列表的長度
- urlencode 對URL進行編碼處理
- upper\lower
- safe 對某個變量關閉自動轉義
- slice 切片操作
- time 格式化時間
- timesince 格式化時間(e.g.,"4day,6hours").
- truncatechars 按照字符截取字符串
- truncatewords 按照單詞截取字符串
- striptags 過程掉html標簽
官方文檔: https://docs.djangoproject.com/en/1.11/ref/templates/builtins/
自定義標簽、過濾器、引用jinja2模板系統
模板包含和繼承
包含:
{% include %} 允許在模板中包含其他模板的內容
標簽的參數可以是:模板名稱、變量、字符串。
- . {% include ‘nav.html‘ %}
- . {% include ‘app/nav.html‘ %}
- . {% include ‘template_name‘ %}
還可以在包含的時候傳遞變量。 https://docs.djangoproject.com/en/1.11/ref/templates/builtins/#incluede
繼承:
本質上說:模板繼承就是先構造一個基礎框架模板,而後在其字模板中對他所包含站點公用部分和定義進行重載
{%block%}
定義塊:https://docs.djangoproject.com/en/1.11/ref/templates/builtins/#block
{%extends%}
繼承父模板 https://docs.djangoproject.com/en/1.11/ref/templates/builtins/#extends
案例:
參見官方例子
註意事項:
- 包含和繼承可以把一些共用的網頁模塊獨立出來,以減少代碼的冗余。
- 如果在模板裏使用{% extends%}的話,這個標簽必須在所有模板標簽的最前面,否則模板繼承不工作
- 通常盡可能模板裏的{%block%} 越多越好,子模板不必定義所有的父block
- 如果你需要得到父模板的塊內容,{{block.super}} 變量可以幫你完成工作,當你需要給父塊添加內容而不是取代他的時候這就很有用
- 不能在統一模板裏定義多個同名的{%block%} ,因為塊標簽同時在兩個地方工作,不僅僅在子模板中,而且在父模板中也填充內容,如果子模板有兩個同名的標簽,父模板將不能決定使用哪個塊內容來使用
Django-常用模板標簽及過濾器