8、Templates知識點總結

一、模板系統基礎知識n<html>n<head><title>Ordering notice</title></head>nn<body>nn<h1>Ordering notice</h1>nn<p>Dear {{ person_name }},</p>nn<p>Thanks for placing an order from {{ company }}. Its scheduled tonship on {{ ship_date|date:"F j, Y" }}.</p>nn<p>Here are the items youve ordered:</p>nn<ul>n{% for item in item_list %}n <li>{{ item }}</li>n{% endfor %}n</ul>nn{% if ordered_warranty %}n <p>Your warranty information will be included in the packaging.</p>n{% else %}n <p>You didnt order a warranty, so youre on your own whenn the products inevitably stop working.</p>n{% endif %}nn<p>Sincerely,<br />{{ company }}</p>nn</body>n</html>n

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

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

二、基本的模板標籤

  • if/else

{% if today_is_weekend %}n <p>Welcome to the weekend!</p>n{% endif %}n{% else %} 標籤是可選的:nn{% if today_is_weekend %}n <p>Welcome to the weekend!</p>n{% else %}n <p>Get back to work.</p>n{% endif %}n

  • for

<ul>n{% for athlete in athlete_list %}n <li>{{ athlete.name }}</li>n{% endfor %}n</ul>n

  • ifequal/ifnotequal

下面的例子比較兩個模板變數 user 和 currentuser :

{% ifequal user currentuser %}n <h1>Welcome!</h1>n{% endifequal %}n

參數可以是硬編碼的字元串,隨便用單引號或者雙引號引起來,所以下列代碼都是正確的:

{% ifequal section sitenews %}n <h1>Site News</h1>n{% endifequal %}n

這是ifnotequal的例子:

{% ifnotequal section "community" %}n <h1>Community</h1>n{% endifnotequal %}n

和 {% if %} 類似, {% ifequal %} 支持可選的 {% else%} 標籤:

{% ifequal section sitenews %}n <h1>Site News</h1>n{% else %}n <h1>No News Here</h1>n{% endifequal %}n

  • 過濾器

象本章前面提到的一樣,模板過濾器是在變數被顯示前修改它的值的一個簡單方法。 過濾器使用管道字元,如下所示:

{{ name|lower }}n

顯示的內容是變數 {{ name }} 被過濾器 lower 處理後的結果,它功能是轉換文本為小寫。

過濾管道可以被套接 ,就是說,一個過濾器管道的輸出又可以作為下一個管道的輸入,如此下去。 下面的例子實現查找列表的第一個元素並將其轉化為大寫。

{{ my_list|first|upper }}n

有些過濾器有參數。 過濾器的參數跟隨冒號之後並且總是以雙引號包含。 例如:

{{ bio|truncatewords:"30" }}n

這個將顯示變數 bio 的前30個詞。

以下幾個是最為重要的過濾器的一部分。

addslashes : 添加反斜杠到任何反斜杠、單引號或者雙引號前面。 這在處理包含JavaScript的文本時是非常有用的。

date : 按指定的格式字元串參數格式化 date 或者 datetime 對象, 範例:

{{ pub_date|date:"F j, Y" }}n

length : 返回變數的長度。 對於列表,這個參數將返回列表元素的個數。 對於字元串,這個參數將返回字元串中字元的個數。 你可以對列表或者字元串,或者任何知道怎麼測定長度的Python 對象使用這個方法(也就是說,有 __len__() 方法的對象)。


推薦閱讀:

3分鐘帶你了解SQL高級操作

TAG:Django框架 | Python |