国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 双流县| 米脂县| 聊城市| 宁德市| 班玛县| 伊宁市| 阿拉尔市| 峨山| 姜堰市| 邻水| 奉贤区| 会宁县| 弥勒县| 富裕县| 富顺县| 汝城县| 若尔盖县| 永和县| 涟水县| 拜城县| 靖西县| 抚州市| 三穗县| 咸宁市| 喀喇沁旗| 祁连县| 靖安县| 龙泉市| 丰原市| 天长市| 伊春市| 镇雄县| 金塔县| 凤山县| 商水县| 微山县| 克什克腾旗| 宣化县| 玉林市| 周口市| 江安县|