小编典典

使用基本模板时如何避免重复设置上下文的过程?

python

使用时jinja2,基本的“骨架”模板通常会被许多其他模板扩展。

我的基本模板之一在上下文中需要某些变量,在我使用该基本模板的任何地方,我都必须重复设置过程。

例如,我可能需要从数据库中读取一些类别名称,并将它们呈现为标题中的列表,现在我必须在使用基本模板的任何地方编写此查询。

有什么好的方法可以避免在使用时重复此类代码jinja2


阅读 222

收藏
2021-01-20

共1个答案

小编典典

您可以将上下文处理器添加到您的应用程序或蓝图。这些为Jinja环境注入了额外的价值。这些不是任何视图的一部分,但是将在请求上下文中运行,因此您可以访问视图中通常会执行的所有操作。

@app.context_processor
def base_context():
    return {
        'author': 'davidism',
        'last_update': interesting_function()
        'headers': db.query(MyModel.category).distinct().all()
    }

蓝图上添加的处理器仅可用于从该蓝图上的视图渲染的模板。

传递给render_template函数的上下文将覆盖这些默认上下文值(如果它们具有相同的键)。

2021-01-20