django基础模板日期渲染
Posted
技术标签:
【中文标题】django基础模板日期渲染【英文标题】:django base template date rendering 【发布时间】:2011-12-22 06:45:03 【问题描述】:我对 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 对象并在同一模板中构建年份字段以进行显示吗?
【问题讨论】:
【参考方案1】:这就是context processors 的用途。
【讨论】:
我觉得这也可以用通用视图来完成,你觉得呢?【参考方案2】:这有帮助吗... https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#now
【讨论】:
【参考方案3】:让我看看我是否明白这一点:年份应该始终是当前年份?不只是一个静态文本,因为那样你会写它,对吗?
如果您不想将其作为变量传递,那么您可以创建一个 custom template tag 来代替使用。
或者您可以创建一个所有其他视图类都继承的基础视图类,并添加常用的模板变量,例如年份。
【讨论】:
@insane-36 我的项目中有一些基类,还有很多 mixin,这增加了很多变量。如果你只记得在重写函数时调用super(..., self).xxx()
,那不是问题。【参考方案4】:
Django 对此用例有支持的解决方案:RequestContext
【讨论】:
以上是关于django基础模板日期渲染的主要内容,如果未能解决你的问题,请参考以下文章