2011-11-04 131 views
0

我對django很新,我有一個簡單的問題。希望你能幫我解決這個問題。我有這樣的基本模板;django基本模板日期呈現

<!doctype html> 
<html> 
<head> 
<title>{% block title %} {% endblock %}</title> 
<link type="text/css" rel ="stylesheet" href="style.css" /> 
<script type="text/javascript" src="jquery.js"> </script> 
</head> 
<body> 
{% block navmenu %} 
{% endblock %} 
{% block content %} 
{% endblock %} 
{% block footer %} 
{% endblock %} 
</body> 
</html> 

雖然這個模板是由具有結構類似這樣的一些中間模板擴展,

{% extends "base.html" %} 
{% block navmenu %} 
<ul> 
<li>Home</li> 
<li>Programming</li> 
<li>About</li> 
<li>Contact</li> 
</ul> 
{% endblock %} 
{% block footer %} 
<h4>Copyright &#169, {{year}} Mel Gibson </h4> 
{% endblock %} 

無論這個模板看起來非常簡單,而我的觀點呈現擴展這個中間模板不同的模板。我在這裏有一個簡單的問題。名爲footer的塊有一個名爲year的變量。這應該是一直貫穿整個頁面的,所以如果我繼續在上下文中傳遞這個變量,那將是冗餘的,渲染這個日期的最簡單方法是什麼,以便它只在代碼中傳遞一次?我可以在HTML文件本身中導入日期時間對象,並在同一模板中構建年份字段以顯示。

回答

1

讓我看看我是否明白這一點:今年應該始終是今年?不只是一個靜態的文本,因爲那樣你就會寫下來,對嗎?

如果您不想將其作爲變量傳遞,那麼您可以創建一個custom template tag來代替。

或者你可以創建一個基本視圖類,所有其他視圖類繼承,並添加常用的模板變量,如年。

+1

我覺得這是好主意,創建一個視圖類和其他類繼承而來的,但應該在每類內返回相同的變量?可以使用模板來完成Python導入和其他計算嗎? – Sandeep

+0

@瘋狂-36我在我的項目中有幾個基類,還有很多mixin,它們增加了很多變量。如果您只是在覆蓋某個函數時記得調用'super(...,self).xxx()',那麼這不是問題。 –

+0

我發現了一個很好的方法來解決這個問題。非常感謝你。 – Sandeep

1

的Django有支持的解決方案,這個用例:RequestContext

+0

謝謝..我已經使其工作... – Sandeep