如何在Jinja2中将时间戳更新为全局变量?

时间:2014-03-26 12:24:40

标签: python datetime flask 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 个答案:

答案 0 :(得分:5)

使用context processor为每个请求注入值

@app.context_processor
def inject_template_globals():
    return {
        'nowts': datetime.datetime.utcnow(),
    }

您通常希望为Web服务器使用UTC时间,而不是本地时间。你永远不知道你的要求来自世界的哪个地方。