django模板語法之include


假如我們有以下模板index.html,代碼為:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<div>網頁公共頭部部分</div>

<h2> 網頁body部分 </h2>

<div>網頁公共底部部分</div>

</body>
</html>

做過web開發的童鞋知道大部分網頁的公共頭部,公共底部部分代碼每個頁面都一樣,那么就應該將其單獨拿出做為一個html, 這樣修改這部分代碼時候,不需要每個頁面都修改, 所以在django中我們可以這么做:

 

top.html

<div>網頁公共頭部部分</div>  

 

bottom.html

<div>網頁公共底部部分</div>  

 

index.html

<!DOCTYPE html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <title>Title</title>  
</head>  
<body>  
  
{% include 'top.html' %}  
  
<h2> 網頁body部分 </h2>  
  
{% include 'bottom.html' %}  
  
</body>  
</html>  

 

我們可以使用django模板引擎的Include語法,來將單獨的頁面包含到當前模板頁面中。有同學有疑問,那我們通過視圖傳遞給模板的上下文,在被包含的模板中可以使用嗎?可以直接使用。

 

假如我們有如下視圖:

def index(request):  
    return render(request, 'index.html', {'a': 100, 'b': 200})  

 

該django的視圖函數,傳遞給模板並渲染模板。

 

top.html修改如下:

<div>網頁公共頭部部分:{{ a }}</div>  

 

這么使用是沒有問題的。

 

我這里有這樣的一個問題,假如所有的頁面都使用共同的頭部top.html, 可能針對1.html 2.html 3.html所使用的頭部有些樣式不一樣,所需top.html:

<div classs='acss'>網頁公共頭部部分</div>  

 

但是對於5.html, 6.html使用的頭部樣式為:

<div class='bcss'>網頁公共頭部部分</div>  

 

很顯然,如果直接通過include方式包含公共頭部,會導致一些頁面顯示問題。既然部分參數不一樣,include允許我們傳遞參數給被include的模板,我們可以使用with語法,那么問題解決如下:

{{ % include 'top.html' with mycss='acss' % }}  

 

top.html可修改如下:

<div class='{{mycss}}'>網頁公共頭部部分</div>  

 

被包含模板中部分參數,由我們include的時候動態指定,那么top.html就不會因為細微差別而編寫多份代碼了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM