Django學習整理

Template默認目錄設置

import os.path
TEMPLATE_DIRS = (
os.path.join(os.path.dirname(__file__), 'templates').replace('\\','/'),
)
這個例子使用了神奇的 Python 內部變量__file__ ,該變量被自動設置爲代碼所在的 Python 模塊文件
名。 `` os.path.dirname(__file__)`` 將會獲取自身所在的文件,即settings.py 所在的目錄,然後
由os.path.join 這個方法將這目錄與 templates 進行連接。如果在windows下,它會智能地選擇正確的後

向斜槓”“進行連接,而不是前向斜槓”/”。

————————————————————————————————————————————————————————————————————

include 模板標籤
在講解了模板加載機制之後,我們再介紹一個利用該機制的內建模板標籤: {% include %} 。該標籤允許在
(模板中)包含其它的模板的內容。 標籤的參數是所要包含的模板名稱,可以是一個變量,也可以是用單/雙引
號硬編碼的字符串。 每當在多個模板中出現相同的代碼時,就應該考慮是否要使用 {% include %} 來減少重
復。
下面這兩個例子都包含了 nav.html 模板。這兩個例子是等價的,它們證明單/雙引號都是允許的。

{% include 'nav.html' %}
{% include "nav.html" %}
下面的例子包含了 includes/nav.html 模板的內容:
{% include 'includes/nav.html' %}
下面的例子包含了以變量 template_name 的值爲名稱的模板內容:
{% include template_name %}
和在 get_template() 中一樣, 對模板的文件名進行判斷時會在所調取的模板名稱之前加上來自 TEMPLATE_DIRS
的模板目錄。
所包含的模板執行時的 context 和包含它們的模板是一樣的。 舉例說,考慮下面兩個模板文件:

# mypage.html
<html>
<body>
{% include "includes/nav.html" %}
<h1>{{ title }}</h1>
</body>
</html>
# includes/nav.html
<div id="nav">
You are in: {{ current_section }}
</div>
如果你用一個包含 current_section的上下文去渲染 mypage.html這個模板文件,這個變量將存在於它所包含
(include)的模板裏,就像你想象的那樣。
如果{% include %}標籤指定的模板沒找到,Django將會在下面兩個處理方法中選擇一個:
如果 DEBUG 設置爲 True ,你將會在 Django 錯誤信息頁面看到 TemplateDoesNotExist 異常。
如果 DEBUG 設置爲 False ,該標籤不會引發錯誤信息,在標籤位置不顯示任何東西。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章