django模板語(yǔ)法學(xué)習(xí)之include示例詳解
前言
在很多網(wǎng)站中,基本上的都會(huì)有一個(gè)開(kāi)頭和一個(gè)結(jié)尾,在每一個(gè)網(wǎng)頁(yè)中都會(huì)顯示。相對(duì)于這種的來(lái)說(shuō),在Django中,最好的方法就是使用include的標(biāo)簽,在每一個(gè)模板中都加入這個(gè)開(kāi)頭和結(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)頁(yè)公共頭部部分</div> <h2> 網(wǎng)頁(yè)body部分 </h2> <div>網(wǎng)頁(yè)公共底部部分</div> </body> </html>
做過(guò)web開(kāi)發(fā)的童鞋知道大部分網(wǎng)頁(yè)的公共頭部,公共底部部分代碼每個(gè)頁(yè)面都一樣,那么就應(yīng)該將其單獨(dú)拿出做為一個(gè)html, 這樣修改這部分代碼時(shí)候,不需要每個(gè)頁(yè)面都修改, 所以在django中我們可以這么做:
top.html
<div>網(wǎng)頁(yè)公共頭部部分</div>
bottom.html
<div>網(wǎng)頁(yè)公共底部部分</div>
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> {% include 'top.html' %} <h2> 網(wǎng)頁(yè)body部分 </h2> {% include 'bottom.html' %} </body> </html>
我們可以使用django模板引擎的Include語(yǔ)法,來(lái)將單獨(dú)的頁(yè)面包含到當(dāng)前模板頁(yè)面中。有同學(xué)有疑問(wèn),那我們通過(guò)視圖傳遞給模板的上下文,在被包含的模板中可以使用嗎?可以直接使用。
假如我們有如下視圖:
def index(request): return render(request, 'index.html', {'a': 100, 'b': 200})
該django的視圖函數(shù),傳遞給模板并渲染模板。
top.html修改如下:
<div>網(wǎng)頁(yè)公共頭部部分:{{ a }}</div>
這么使用是沒(méi)有問(wèn)題的。
我這里有這樣的一個(gè)問(wèn)題,假如所有的頁(yè)面都使用共同的頭部top.html, 可能針對(duì)1.html 2.html 3.html所使用的頭部有些樣式不一樣,所需top.html:
<div classs='acss'>網(wǎng)頁(yè)公共頭部部分</div>
但是對(duì)于5.html, 6.html使用的頭部樣式為:
<div class='bcss'>網(wǎng)頁(yè)公共頭部部分</div>
很顯然,如果直接通過(guò)include方式包含公共頭部,會(huì)導(dǎo)致一些頁(yè)面顯示問(wèn)題。既然部分參數(shù)不一樣,include允許我們傳遞參數(shù)給被include的模板,我們可以使用with語(yǔ)法,那么問(wèn)題解決如下:
{{ % include 'top.html' with mycss='acss' % }}
top.html可修改如下:
<div class='{{mycss}}'>網(wǎng)頁(yè)公共頭部部分</div>
被包含模板中部分參數(shù),由我們include的時(shí)候動(dòng)態(tài)指定,那么top.html就不會(huì)因?yàn)榧?xì)微差別而編寫(xiě)多份代碼了。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Python內(nèi)建類型list源碼學(xué)習(xí)
這篇文章主要為大家介紹了Python內(nèi)建類型list源碼學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05Python3批量創(chuàng)建Crowd用戶并分配組
這篇文章主要介紹了Python3批量創(chuàng)建Crowd用戶并分配組,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05Python運(yùn)維之獲取系統(tǒng)CPU信息的實(shí)現(xiàn)方法
今天小編就為大家分享一篇Python運(yùn)維之獲取系統(tǒng)CPU信息的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06Python隊(duì)列Queue實(shí)現(xiàn)詳解
這篇文章主要介紹了Python隊(duì)列Queue實(shí)現(xiàn)詳解,隊(duì)列是一種列表,隊(duì)列用于存儲(chǔ)按順序排列的數(shù)據(jù),隊(duì)列是一種先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),不同的是隊(duì)列只能在隊(duì)尾插入元素,在隊(duì)首刪除元素,需要的朋友可以參考下2023-07-07Python實(shí)現(xiàn)二分查找算法實(shí)例
這篇文章主要介紹了Python實(shí)現(xiàn)二分查找算法,實(shí)例分析了二分查找算法的原理與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2015-05-05python 爬蟲(chóng)網(wǎng)頁(yè)登陸的簡(jiǎn)單實(shí)現(xiàn)
這篇文章主要介紹了python 爬蟲(chóng)網(wǎng)頁(yè)登陸的簡(jiǎn)單實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11Python竟能畫(huà)這么漂亮的花,帥呆了(代碼分享)
這篇文章主要介紹了用Python作圖的一個(gè)簡(jiǎn)單實(shí)例,通過(guò)turtle模塊實(shí)現(xiàn)作圖,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11python Hypothesis生成和執(zhí)行大量的測(cè)試用例
Hypothesis是一個(gè)基于屬性的測(cè)試(property-based testing)庫(kù),它能夠幫助我們生成和執(zhí)行大量的測(cè)試用例,與傳統(tǒng)的單元測(cè)試相比,屬性測(cè)試更加靈活和全面,能夠發(fā)現(xiàn)更多的邊界情況和潛在的錯(cuò)誤2024-01-01