如何在Jinja2中将时间戳更新为全局变量?
我知道这里有类似的问题,但那些对我没有帮助。
在我的主 py
文件中,我设置了一个叫 nowts
的全局变量,代码如下:
app.jinja_env.globals['nowts'] = datetime.datetime.now()
然后在主模板(base.html
文件)中,我传递并格式化了日期时间,代码如下:
{% block navbar %}
...
<p>{{ nowts.strftime('%A, %b %d %Y / %X') }}</p>
...
{% endblock %}
比如,输出是:
Wednesday, Mar 26 2014 / 11:57:51
如你所见,日期和时间显示得很正确,但只显示一次。过了几分钟后,我重新打开主页面(或子页面),时间还是一样的。如果用户刷新页面,怎么才能让 nowts
这个全局变量一直更新呢?
1 个回答
5
使用上下文处理器来在每次请求时注入值:
@app.context_processor
def inject_template_globals():
return {
'nowts': datetime.datetime.utcnow(),
}
通常来说,网页服务器应该使用协调世界时(UTC),而不是当地时间。因为你永远不知道请求来自世界的哪个地方。