Django作為Web框架,需要一種很便利的方法動態地生成 HTML 網頁,因此有了模板這個概念,模板包含所需 HTML 的部分代碼以及一些特殊語法,特殊語法用于描述如何將視圖傳遞的資料動態插入HTML網頁中,
Django模板引擎
Django 內置的模板引擎包含模板背景關系(亦可稱為模板變數)、標簽 和 過濾器,各個功能說明如下:
- 模板背景關系是以變數的形式寫入模板檔案里畫,變數值由視圖函式或視圖類傳遞所得,
- 標簽是對模板背景關系進行控制輸出,比如模板背景關系的判斷和回圈控制等,
- 模板繼承隸屬于標簽,它是將每個模板檔案重復的代碼抽取出來并寫在一個共用的模板檔案中,其他模板檔案通過繼承共用模板檔案來實作完整的網頁輸出,
- 過濾器是對模板背景關系進行操作處理,比如模板背景關系的內容截取、替換或格式轉換等,
1、模板背景關系
模板背景關系是模板中基本組成單位,背景關系的資料由視圖函式或視圖類傳遞,它以 {{ variable }} 表示,variable 是背景關系的名稱,它支持 Python 所有的資料型別,如字典、串列、元組、字串、整形或實體化物件等,背景關系的資料格式不同,在模板里的使用方式也有所差異,如下所示:
# 假如 variable1 = '字串或整型' <div>{{ variable1 }}</div> # 輸出 “<div>字串或整型</div>” # 假如 variable2 = {'name': '字典或實體化物件'} <div>{{ variable2.name }}</div> # 輸出 “<div>字典或實體化物件</div>” # 假如 variable3 = ['元組或串列'] <div>{{ variable3.0 }}</div> # 輸出 “<div>元組或串列</div>”
2、 Django常用內置標簽
標簽是對模板背景關系進行控制輸出,它是以 {% tag %} 表示的,其中tag是標簽的名稱,Diango內置了許多模板標簽,比如 { % if % }(判斷標簽)、{ % for % }(回圈標簽)或{ % url % }(路由標簽)等,
內置的模板標簽可以在 Django 原始碼(\django\template\defaulttags.py)里找到定義程序,每個內置標簽都有功能注釋和使用方法,這里本人只列舉常用的內置標簽,如下表所示:
| 標簽 | 描述 |
| { % for % } | 遍歷輸出背景關系的內容 |
| { % if % } | 對背景關系進行條件判斷 |
| { % csrf_token % } | 生成csrf token的標簽,用于防護跨站請求偽造攻擊 |
| { % url % } | 參考路由配置的地址,生成相應的路由地址 |
| { % with % } | 將背景關系名重新命名 |
| { % load % } | 加載匯入Django的標簽庫 |
| { % static % } | 讀取靜態資源的檔案內容 |
| { % extends xxx % } | 模板繼承,xxx為模板檔案名,使當前模板繼承xxx模板 |
| { % block xxx % } | 重寫父類模板的代碼 |
3、Django過濾器
過濾器主要是對背景關系的內容進行操作處理,如替換、反序和轉義等,通過過濾器處理背景關系可以將其資料格式或內容轉化為我們想要的顯示效果,而且相應減少視圖的代碼量,過濾器的使用方法如下:
{{ variable | filter }}
若背景關系設有過濾器,則模板引擎在決議背景關系時,首先由過濾器 filter 處理背景關系 variable,然后將處理后的結果進行決議并顯示在網頁上,variable 代表模板背景關系,管道符號 "|" 代表當前背景關系使用過濾器,filter 代表某個過濾器,單個背景關系可以支持多個過濾器同時使用,例如:
{{ variable | filter | lower }}
在使用的程序中,有些過濾器還可以傳入引數,但僅支持傳入一個引數,帶引數的過濾器與引數之間使用冒號隔開,并且兩者之間不能留有空格,例如:
{{ variable | date:"D d M Y" }}
Django的內置過濾器可以在原始碼(\django\template\defaultfilters.py)里找到具體的定義程序,這里本人就不在一一列舉,
希望以上內容可以幫助到各位,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/281121.html
標籤:Python
