Django做爲Web框架,須要一種很便利的方法動態地生成 HTML 網頁,所以有了模板這個概念。模板包含所需 HTML 的部分代碼以及一些特殊語法,特殊語法用於描述如何將視圖傳遞的數據動態插入HTML網頁中。django
Django 內置的模板引擎包含模板上下文(亦可稱爲模板變量)、標籤 和 過濾器,各個功能說明以下:框架
模板上下文是模板中基本組成單位,上下文的數據由視圖函數或視圖類傳遞。它以 {{ variable }} 表示,variable 是上下文的名稱,它支持 Python 全部的數據類型,如字典、列表、元組、字符串、整形或實例化對象等。上下文的數據格式不一樣,在模板裏的使用方式也有所差別,以下所示:ide
# 假如 variable1 = '字符串或整型'<div>{{ variable1 }}div># 輸出 「<div>字符串或整型div>」 # 假如 variable2 = {'name': '字典或實例化對象'}<div>{{ variable2.name }}div># 輸出 「<div>字典或實例化對象div>」 # 假如 variable3 = ['元組或列表']<div>{{ variable3.0 }}div># 輸出 「<div>元組或列表div>」
標籤是對模板上下文進行控制輸出,它是以 {% 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 % } | 重寫父類模板的代碼 |
過濾器主要是對上下文的內容進行操做處理,如替換、反序和轉義等。經過過濾器處理上下文能夠將其數據格式或內容轉化爲咱們想要的顯示效果,並且相應減小視圖的代碼量。過濾器的使用方法以下:url
{{ variable | filter }}
若上下文設有過濾器,則模板引擎在解析上下文時,首先由過濾器 filter 處理上下文 variable,而後將處理後的結果進行解析並顯示在網頁上。variable 表明模板上下文,管道符號 "|" 表明當前上下文使用過濾器,filter 表明某個過濾器。單個上下文能夠支持多個過濾器同時使用,例如:csrf
{{ variable | filter | lower }}
在使用的過程當中,有些過濾器還能夠傳入參數,但僅支持傳入一個參數,帶參數的過濾器與參數之間使用冒號隔開,而且二者之間不能留有空格,例如:對象
{{ variable | date:"D d M Y" }}
Django的內置過濾器能夠在源碼(\django\template\defaultfilters.py)裏找到具體的定義過程,這裏本人就不在一一列舉。繼承
但願以上內容能夠幫助到各位。模板引擎