django template 讀書筆記

模板句點查找規則:當模板在系統變量名中遇到點時,按如下順序查找.web

1 字典類型查找 e.g. foo['bar']spa

2 屬性查找 e.g foo.bar對象

3 方法調用 e.g. foo.bar()索引

4 列表類型索引查找e.g foo[bar]字符串

系統使用找到的第一個匹配的.這是短路的邏輯.io

若是遇到多級查詢嵌套: foo.bar.jokeast

先按字典類型查找foo["bar"],再按方法調用joke()模板

方法調用行爲:class

  在方法查找過程當中,若是某方法拋出一個異常,除非該異常有一個silent_variable_failure屬性而且值爲True.不然的話它將被傳播.若是哪樣.模板裏的變量會被設置爲空字符串.e.g.變量

>>> t = Template("My name is {{ person.first_name }}.")
>>> class PersonClass3:
...     def first_name(self):
...         raise AssertionError, "foo"
>>> p = PersonClass3()
>>> t.render(Context({"person": p}))
Traceback (most recent call last):
...
AssertionError: foo

>>> class SilentAssertionError(AssertionError):
...     silent_variable_failure = True
>>> class PersonClass4:
...     def first_name(self):
...         raise SilentAssertionError
>>> p = PersonClass4()
>>> t.render(Context({"person": p}))
u'My name is .'

 default,若是一個變量不存在.模板系統會把它展現爲空字符串.不作任何事情來表示失敗.如上所示.

系統靜悄悄地表示失敗,而不是引起一個異常,由於這一般是人爲錯誤形成的。 這種狀況下,由於變量名有錯誤的情況或名稱, 全部的查詢都會失敗。 現實世界中,對於一個web站點來講,若是僅僅由於一個小的模板語法錯誤而形成沒法訪問,這是不可接受的..

上下文對象context

你能夠經過傳遞一個字典給context()來初始化上下文.初始化後你可使用標準的Python字典語法向context對象添加或刪除條目.

模板系統有內置的標籤和過濾器.{% if %}標籤檢查條件是否爲真.{%else%}條件是可選的.記得用{%endif%}標籤結束,沒有{%elif%}標籤

Python & Django中.下列表示爲 False:

空列表[] /空元組()/ 空字典{} /空字符串'' /零值/特殊對象None/對象False 除以上幾點之外其它均視爲True

if條件還能夠用or and not等鏈接多個變量來判斷.但不容許在同一標籤中同時使用and or

 

{%for%}: 容許咱們在一個序列上迭代.與Python的 for 語句的情形相似,循環語法是 for X in Y ,Y是要迭代的序列而X是在每個特定的循環中使用的變量名稱。每一次循環中,模板系統會渲染在 {% for %}{% endfor %} 之間的全部內容

相關文章
相關標籤/搜索