使用时jinja2
,基本“骨架”模板通常由许多其他模板扩展。
我的基本模板之一需要上下文中的某些变量,并且在任何使用此基本模板的地方都必须重复设置过程。
例如,我可能需要从数据库读取一些类别名称并将它们呈现为标题中的列表,现在我必须在使用基本模板的任何地方编写此查询。
使用时有哪些好方法可以避免重复此类代码jinja2
?
您可以将上下文处理器添加到您的应用程序或蓝图中。这些将额外的值注入 Jinja 上下文中。这些不是任何视图的一部分,但将在请求上下文中运行,因此您可以访问视图中通常会出现的所有内容。
@app.context_processor
def base_context():
return {
'author': 'davidism',
'last_update': interesting_function()
'headers': db.query(MyModel.category).distinct().all()
}
蓝图上添加的处理器仅适用于从该蓝图上的视图渲染的模板。
上下文传递给render_template
函数将覆盖这些默认上下文值(如果它们具有相同的键)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)