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

发布于 2021-01-29 15:04:52

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

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

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

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

关注者
0
被浏览
71
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

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

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

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看