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__() 方法的對象)。
推薦閱讀: