Flask:在渲染前扩展模板

时间:2021-04-29 15:39:08

标签: flask

我想为我的 Flask 应用程序提供可插拔模块。一些模块可以扩展 UI。对于此类扩展,我的基本模板中有 {% block extension1 %} 之类的块。这个想法是在属于模块的单独模板文件中实现这些块。

现在有一个问题 - 如何指示主请求处理程序使用模块的模板扩展其模板?我认为它可以在 app.after_request() 方法中完成。但我还没有找到任何方法来扩展模板与来自另一个文件的部分

1 个答案:

答案 0 :(得分:0)

可能是我的解决方案不是最好的,但这是我带来的。

base.html:

...
      {% if extension_1 %}
        {% include extension_1 ignore missing %}
      {% endif %}
...

module.py:

    @app.before_request
    def init_module():
        app.jinja_env.globals.update(extension_1='module.jinja')

module.jinja:

some content here

因此,当定义 extension_1 时,会包含适当的模板。

当多个模块同时定义 extension_1 时,我没有处理冲突解决方案。但我会在需要时来处理。