Django學習(6)-模板(templates)

模板的使用

復用上次的工程,繼續完善home.html
learnapp中,定義一個函數

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作為名稱的一部分,就不會混淆。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容