前言
在很多網(wǎng)站中,基本上的都會(huì)有一個(gè)開頭和一個(gè)結(jié)尾,在每一個(gè)網(wǎng)頁中都會(huì)顯示。相對(duì)于這種的來說,在Django中,最好的方法就是使用include的標(biāo)簽,在每一個(gè)模板中都加入這個(gè)開頭和結(jié)尾的標(biāo)簽。
include標(biāo)簽使用
假如我們有以下模板index.html,代碼為:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><div>網(wǎng)頁公共頭部部分</div><h2> 網(wǎng)頁body部分 </h2><div>網(wǎng)頁公共底部部分</div></body></html>
做過web開發(fā)的童鞋知道大部分網(wǎng)頁的公共頭部,公共底部部分代碼每個(gè)頁面都一樣,那么就應(yīng)該將其單獨(dú)拿出做為一個(gè)html, 這樣修改這部分代碼時(shí)候,不需要每個(gè)頁面都修改, 所以在django中我們可以這么做:
top.html
<div>網(wǎng)頁公共頭部部分</div>
bottom.html
<div>網(wǎng)頁公共底部部分</div>
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> {% include 'top.html' %} <h2> 網(wǎng)頁body部分 </h2> {% include 'bottom.html' %} </body> </html>我們可以使用django模板引擎的Include語法,來將單獨(dú)的頁面包含到當(dāng)前模板頁面中。有同學(xué)有疑問,那我們通過視圖傳遞給模板的上下文,在被包含的模板中可以使用嗎?可以直接使用。
假如我們有如下視圖:
def index(request): return render(request, 'index.html', {'a': 100, 'b': 200}) 該django的視圖函數(shù),傳遞給模板并渲染模板。
top.html修改如下:
<div>網(wǎng)頁公共頭部部分:{{ a }}</div> 這么使用是沒有問題的。
我這里有這樣的一個(gè)問題,假如所有的頁面都使用共同的頭部top.html, 可能針對(duì)1.html 2.html 3.html所使用的頭部有些樣式不一樣,所需top.html:
<div classs='acss'>網(wǎng)頁公共頭部部分</div>
但是對(duì)于5.html, 6.html使用的頭部樣式為:
<div class='bcss'>網(wǎng)頁公共頭部部分</div>
很顯然,如果直接通過include方式包含公共頭部,會(huì)導(dǎo)致一些頁面顯示問題。既然部分參數(shù)不一樣,include允許我們傳遞參數(shù)給被include的模板,我們可以使用with語法,那么問題解決如下:
{{ % include 'top.html' with mycss='acss' % }} top.html可修改如下:
<div class='{{mycss}}'>網(wǎng)頁公共頭部部分</div>
新聞熱點(diǎn)
疑難解答
圖片精選