首页 > 解决方案 > Flask:渲染前扩展模板

问题描述

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

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

标签: flask

解决方案


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

base.html:

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

模块.py:

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

模块.jinja:

some content here

因此,何时extension_1定义了适当的模板。

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


推荐阅读