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 &#169, 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基础模板日期渲染的主要内容,如果未能解决你的问题,请参考以下文章

Django基础四之模板系统

06-Django-基础篇-模板

django基础简介

Django基础知识

Django基础四之模板系统

Django模板:在同一基础中使用多个块标签