模板是一個文本,用於分離文檔的表現形式和內容。 模板定義了佔位符以及各類用於規範文檔該如何顯示的各部分基本邏輯(模板標籤)。 模板一般用於產生HTML,可是Django的模板也能產生任何基於文本格式的文檔。 html
讓咱們從一個簡單的例子模板開始。 該模板描述了一個向某個與公司簽單人員致謝 HTML 頁面。 可將其視爲一個格式信函: 學習
<html> <head><title>Ordering notice</title></head> <body> <h1>Ordering notice</h1> <p>Dear {{ person_name }},</p> <p>Thanks for placing an order from {{ company }}. It's scheduled to ship on {{ ship_date|date:"F j, Y" }}.</p> <p>Here are the items you've ordered:</p> <ul> {% for item in item_list %} <li>{{ item }}</li> {% endfor %} </ul> {% if ordered_warranty %} <p>Your warranty information will be included in the packaging.</p> {% else %} <p>You didn't order a warranty, so you're on your own when the products inevitably stop working.</p> {% endif %} <p>Sincerely,<br />{{ company }}</p> </body> </html>
該模板是一段添加了些許變量和模板標籤的基礎 HTML 。 讓咱們逐步分析一下: spa
用兩個大括號括起來的文字(例如 {{ person_name }} )稱爲 變量(variable) 。這意味着在此處插入指定變量的值。 如何指定變量的值呢? 稍後就會說明。 code
被大括號和百分號包圍的文本(例如 {% if ordered_warranty %} )是 模板標籤(template tag) 。標籤(tag)定義比較明確,即: 僅通知模板系統完成某些工做的標籤。 orm
這個例子中的模板包含一個for標籤( {% for item in item_list %} )和一個if 標籤({% if ordered_warranty %} ) htm
for標籤相似Python的for語句,可以讓你循環訪問序列裏的每個項目。 if 標籤,正如你所料,是用來執行邏輯判斷的。 在這裏,tag標籤檢查ordered_warranty值是否爲True。若是是,模板系統將顯示{% if ordered_warranty %}和{% else %}之間的內容;不然將顯示{% else %}和{% endif %}之間的內容。{% else %}是可選的。 ip
最後,這個模板的第二段中有一個關於filter過濾器的例子,它是一種最便捷的轉換變量輸出格式的方式。 如這個例子中的{{ship_date|date:」F j, Y」 }},咱們將變量ship_date傳遞給date過濾器,同時指定參數」F j,Y」。date過濾器根據參數進行格式輸出。 過濾器是用管道符(|)來調用的,具體能夠參見Unix管道符。 ci
Django 模板含有不少內置的tags和filters,咱們將陸續進行學習文檔