我是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 ©, {{year}} Mel Gibson </h4>
{% endblock %}
这个模板看起来都非常简单,而我的视图呈现了扩展此中间模板的不同模板。我这里有一个简单的问题。名为footer的块有一个名为year的变量。这应该在整个页面中保持不变,所以如果我继续在上下文中传递这个变量,它将是冗余,渲染这个日期的最简单方法是什么,以便它只传递一次代码?我可以在html文件本身中导入datetime对象,并在同一模板中构建年份字段以显示。
答案 0 :(得分:2)
这是context processors的用途。
答案 1 :(得分:2)
答案 2 :(得分:1)
让我看看我是否直截了当:这一年应该总是今年?不仅仅是一个静态文本,因为那样你就会写它,我是对的吗?
如果您不想将其作为变量传递,那么您可以创建一个custom template tag来代替使用。
或者您可以创建一个所有其他视图类继承的基本视图类,并添加常用的模板变量,如年份。
答案 3 :(得分:1)
Django有一个支持这个用例的解决方案:RequestContext