我想为我的 Flask 应用程序提供可插拔模块。一些模块可以扩展 UI。对于此类扩展,我的基本模板中有 {% block extension1 %}
之类的块。这个想法是在属于模块的单独模板文件中实现这些块。
现在有一个问题 - 如何指示主请求处理程序使用模块的模板扩展其模板?我认为它可以在 app.after_request()
方法中完成。但我还没有找到任何方法来扩展模板与来自另一个文件的部分
答案 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
时,我没有处理冲突解决方案。但我会在需要时来处理。