国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

Django中模版的子目錄與include標(biāo)簽的使用方法

2020-01-04 18:03:37
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

這篇文章主要介紹了Django中模版的子目錄與include標(biāo)簽的使用方法,有利于Python的Django框架的模版布局,需要的朋友可以參考下

get_template()中使用子目錄

把所有的模板都存放在一個(gè)目錄下可能會(huì)讓事情變得難以掌控。 你可能會(huì)考慮把模板存放在你模板目錄的子目錄中,這非常好。 事實(shí)上,我們推薦這樣做;一些Django的高級(jí)特性(例如將在第十一章講到的通用視圖系統(tǒng))的缺省約定就是期望使用這種模板布局。

把模板存放于模板目錄的子目錄中是件很輕松的事情。 只需在調(diào)用 get_template() 時(shí),把子目錄名和一條斜杠添加到模板名稱之前,如:

 

 
  1. t = get_template('dateapp/current_datetime.html'

由于 render_to_response() 只是對(duì) get_template() 的簡(jiǎn)單封裝, 你可以對(duì) render_to_response() 的第一個(gè)參數(shù)做相同處理。

return render_to_response('dateapp/current_datetime.html', {'current_date': now})

對(duì)子目錄樹(shù)的深度沒(méi)有限制,你想要多少層都可以。 只要你喜歡,用多少層的子目錄都無(wú)所謂。

注意

Windows用戶必須使用斜杠而不是反斜杠。 get_template() 假定的是 Unix 風(fēng)格的文件名符號(hào)約定。

include 模板標(biāo)簽

在講解了模板加載機(jī)制之后,我們?cè)俳榻B一個(gè)利用該機(jī)制的內(nèi)建模板標(biāo)簽: {% include %} 。該標(biāo)簽允許在(模板中)包含其它的模板的內(nèi)容。 標(biāo)簽的參數(shù)是所要包含的模板名稱,可以是一個(gè)變量,也可以是用單/雙引號(hào)硬編碼的字符串。 每當(dāng)在多個(gè)模板中出現(xiàn)相同的代碼時(shí),就應(yīng)該考慮是否要使用 {% include %} 來(lái)減少重復(fù)。

下面這兩個(gè)例子都包含了 nav.html 模板。這兩個(gè)例子是等價(jià)的,它們證明單/雙引號(hào)都是允許的。

 

 
  1. {% include 'nav.html' %} 
  2. {% include "nav.html" %} 

下面的例子包含了 includes/nav.html 模板的內(nèi)容:

 

 
  1. {% include 'includes/nav.html' %} 

下面的例子包含了以變量 template_name 的值為名稱的模板內(nèi)容:

 

 
  1. {% include template_name %} 

和在 get_template() 中一樣, 對(duì)模板的文件名進(jìn)行判斷時(shí)會(huì)在所調(diào)取的模板名稱之前加上來(lái)自 TEMPLATE_DIRS 的模板目錄。

所包含的模板執(zhí)行時(shí)的 context 和包含它們的模板是一樣的。 舉例說(shuō),考慮下面兩個(gè)模板文件:

 

 
  1. # mypage.html 
  2.  
  3. <html> 
  4. <body> 
  5. {% include "includes/nav.html" %} 
  6. <h1>{{ title }}</h1> 
  7. </body> 
  8. </html> 
  9.  
  10. # includes/nav.html 
  11.  
  12. <div id="nav"
  13. You are in: {{ current_section }} 
  14. </div> 

如果你用一個(gè)包含 current_section的上下文去渲染 mypage.html這個(gè)模板文件,這個(gè)變量將存在于它所包含(include)的模板里,就像你想象的那樣。

如果{% include %}標(biāo)簽指定的模板沒(méi)找到,Django將會(huì)在下面兩個(gè)處理方法中選擇一個(gè):

如果 DEBUG 設(shè)置為 True ,你將會(huì)在 Django 錯(cuò)誤信息頁(yè)面看到 TemplateDoesNotExist 異常。

如果 DEBUG 設(shè)置為 False ,該標(biāo)簽不會(huì)引發(fā)錯(cuò)誤信息,在標(biāo)簽位置不顯示任何東西。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 鹤山市| 贞丰县| 贵南县| 虎林市| 泾阳县| 临朐县| 平顶山市| 淮北市| 阿坝| 竹溪县| 阜城县| 上栗县| 安宁市| 潢川县| 崇左市| 武功县| 盐津县| 昭苏县| 蓬安县| 阳春市| 大关县| 左贡县| 华蓥市| 农安县| 永州市| 博野县| 团风县| 梓潼县| 密云县| 扬中市| 六安市| 永顺县| 淮南市| 轮台县| 修文县| 武义县| 同仁县| 阳原县| 浦东新区| 达孜县| 吴忠市|