模板的使用
復用上次的工程,繼續完善home.html
在learn
app中,定義一個函數
def home(request):
.......return render(request,'home.html')
配置訪問路徑:
url(r'^learn/home/',learn_views.home,name='home'),
模板的其他知識
模板相關知識
網站模板的設計,一般的,我們做網站有一些通用的部分,比如 導航,底部,訪問統計代碼等等
nav.html, bottom.html, tongji.html
使用 block 進行數據的綁定與繼承,寫一個 base.html
,代碼如下
如果引用其他的文件,可以用
{% include '文件名' %}
進行引用相應的文件當在寫
home.html
文件的時候,直接繼承 base.html
即可,修改{% block 自定義標示 %}
,就可以修改相應的部分,如下:
注意
注意:模板一般放在app下的templates中,Django會自動去這個文件夾中找。但 假如我們每個app的templates中都有一個 index.html,當我們在views.py中使用的時候,直接寫一個 render(request, 'index.html'),Django 能不能找到當前 app 的 templates 文件夾中的 index.html 文件夾呢?(答案是不一定能,有可能找錯)
Django 模板查找機制: Django 查找模板的過程是在每個 app 的 templates 文件夾中找(而不只是當前 app 中的代碼只在當前的 app 的 templates 文件夾中找)。各個 app 的 templates 形成一個文件夾列表,Django 遍歷這個列表,一個個文件夾進行查找,當在某一個文件夾找到的時候就停止,所有的都遍歷完了還找不到指定的模板的時候就是 Template Not Found (過程類似于Python找包)。這樣設計有利當然也有弊,有利是的地方是一個app可以用另一個app的模板文件,弊是有可能會找錯了。所以我們使用的時候在 templates 中建立一個 app 同名的文件夾,這樣就好了。
這就需要把每個app中的 templates 文件夾中再建一個 app 的名稱,僅和該app相關的模板放在 app/templates/app/ 目錄下面,
例如:項目 zqxt 有兩個 app,分別為 tutorial 和 tryit
這樣,使用的時候,模板就是 "tutorial/index.html" 和 "tryit/index.html" 這樣有app作為名稱的一部分,就不會混淆。