1. 程式人生 > >Django-常用模板標簽及過濾器

Django-常用模板標簽及過濾器

tof cut mark 單詞 pac 繼承 信息 第一個 官方文檔

常用模板標簽及過濾器

模板的組成

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 %}

的使用 用來循環一個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%} 多行註釋

  1. {% csrf_token %} 生成csrf_token的標簽用於防止跨網站攻擊驗證
  2. {% debug %} 調用調試信息
  3. {% filter %} 將filter標簽圈定的內容執行過濾操作
  4. {% autoescape %} 自動轉義設置 10 {% firstof%} 輸出第一個值不等於False的變量
  5. {%load%} 加載標簽庫
  6. {%now%} 獲取當前時間
  7. {%spaceless%} 移除空格
  8. {%url%} 引入路由設置的地址
  9. {% varbatim%} 禁止render 禁止渲染
  10. {% with%} 用於簡單的變量緩存負責的變量名

常用過濾器(filter)

  1. add 給變量加上相應的值
  2. addslashes 給變量找那個引號前加上斜線
  3. capfirst 首字母大寫
  4. cut 從字符串中移除指定字符
  5. date 格式化日期字符串
  6. default 如果是False 就替換為設置的默認值,否則就使用本來的值
  7. default_if_none 如果值為None 就替換為默認值,否則就是用本來的值
  8. dicsort 按照設定參數(key)對應的value對列表進行排序
  9. dictsortreversed 和上面恰好相反
  10. divisibleby 是否能夠被某個數字整除,是的化返回True 否則返回False
  11. ** escape** 對字符串進行轉義
  12. escapejs 替換value中某些字符,以適應JAVASCRIPT和JSON 格式 13.** filesizeformat** 格式化文件大小顯示
  13. first 返回列表中的第一個值
  14. last 返回列表中最後一個值
  15. floatformat 格式化浮點數
  16. length 求子符串貨列表的長度
  17. length_is 比較字符串或列表的長度
  18. urlencode 對URL進行編碼處理
  19. upper\lower
  20. safe 對某個變量關閉自動轉義
  21. slice 切片操作
  22. time 格式化時間
  23. timesince 格式化時間(e.g.,"4day,6hours").
  24. truncatechars 按照字符截取字符串
  25. truncatewords 按照單詞截取字符串
  26. 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

案例:

參見官方例子

註意事項:

  1. 包含和繼承可以把一些共用的網頁模塊獨立出來,以減少代碼的冗余。
  2. 如果在模板裏使用{% extends%}的話,這個標簽必須在所有模板標簽的最前面,否則模板繼承不工作
  3. 通常盡可能模板裏的{%block%} 越多越好,子模板不必定義所有的父block
  4. 如果你需要得到父模板的塊內容,{{block.super}} 變量可以幫你完成工作,當你需要給父塊添加內容而不是取代他的時候這就很有用
  5. 不能在統一模板裏定義多個同名的{%block%} ,因為塊標簽同時在兩個地方工作,不僅僅在子模板中,而且在父模板中也填充內容,如果子模板有兩個同名的標簽,父模板將不能決定使用哪個塊內容來使用

Django-常用模板標簽及過濾器