1. 程式人生 > >Django中文文件2.0

Django中文文件2.0

模板系統基本知識

模板是一個文字,用於分離文件的表現形式和內容。 模板定義了佔位符以及各種用於規範文件該如何顯示的各部分基本邏輯(模板標籤)。 模板通常用於產生HTML,但是Django的模板也能產生任何基於文字格式的文件。

讓我們從一個簡單的例子模板開始。 該模板描述了一個向某個與公司簽單人員致謝 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 。 讓我們逐步分析一下:

用兩個大括號括起來的文字(例如 {{ person_name }} )稱為 變數(variable) 。這意味著在此處插入指定變數的值。 如何指定變數的值呢? 稍後就會說明。

被大括號和百分號包圍的文字(例如 {% if ordered_warranty %} )是 模板標籤(template tag) 。標籤(tag)定義比較明確,即: 僅通知模板系統完成某些工作的標籤。

這個例子中的模板包含一個for標籤( {% for item in item_list %} )和一個if 標籤({% if ordered_warranty

 %} )

for標籤類似Python的for語句,可讓你迴圈訪問序列裡的每一個專案。 if 標籤,正如你所料,是用來執行邏輯判斷的。 在這裡,tag標籤檢查ordered_warranty值是否為True。如果是,模板系統將顯示{% if ordered_warranty %}和{% else %}之間的內容;否則將顯示{% else %}和{% endif %}之間的內容。{% else %}是可選的。

最後,這個模板的第二段中有一個關於filter過濾器的例子,它是一種最便捷的轉換變數輸出格式的方式。 如這個例子中的{{ship_date|date:”F j, Y” }},我們將變數ship_date傳遞給date過濾器,同時指定引數”F j,Y”。date過濾器根據引數進行格式輸出。 過濾器是用管道符(|)來呼叫的,具體可以參見Unix管道符。

Django 模板含有很多內建的tags和filters,我們將陸續進行學習. 附錄F列出了很多的tags和filters的列表,熟悉這些列表對你來說是個好建議. 你依然可以利用它建立自己的tag和filters。這些我們在第9章會講到。