2011-11-04 128 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