我是using Jinja在我的网站上,我喜欢它 .
我've come across a simple need. How to display today'约会? Is there a way to inline some Python code in a Jinja template?
import datetime
now = datetime.datetime.utcnow()
print now.strftime("%Y-%m-%d %H:%M")
This article says no,但建议使用宏还是过滤器?
真?我们必须诉诸于所有这一切吗?好的,在这种情况下会是什么样子?
2 回答
不,没有办法将Python内联到Jinja . 但是,您可以通过扩展模板引擎的Environment或所有模板可用的global namespace来添加Jinja所知的构造 . 或者,您可以添加一个过滤器,让您设置日期时间对象的格式 .
Flask将Jinja2 Environment存储在app.jinja_env上 . 您可以通过直接添加到此词典或使用@app.context_processor装饰器将新上下文注入环境 .
无论您选择哪种方式,都应在设置应用程序时完成,然后才能提供任何请求 . (有关如何设置过滤器的一些good examples,请参阅网站的片段部分 - the docs包含添加到全局变量的一个很好的示例) .
您可以添加到global variables,可以从Jinja模板访问 . 您可以将自己的函数定义放在那里,无论您需要什么 .