django基本模板日期渲染

时间:2011-11-04 18:30:00

标签: python django django-templates

我是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文件本身中导入datetime对象,并在同一模板中构建年份字段以显示。

4 个答案:

答案 0 :(得分:2)

这是context processors的用途。

答案 1 :(得分:2)

答案 2 :(得分:1)

让我看看我是否直截了当:这一年应该总是今年?不仅仅是一个静态文本,因为那样你就会写它,我是对的吗?

如果您不想将其作为变量传递,那么您可以创建一个custom template tag来代替使用。

或者您可以创建一个所有其他视图类继承的基本视图类,并添加常用的模板变量,如年份。

答案 3 :(得分:1)

Django有一个支持这个用例的解决方案:RequestContext