在烧瓶中,我们可以从python视图中渲染jinja2宏,
from flask import get_template_attribute
macro = get_template_attribute(template_name, macro_name)
# macro uses global variable `global_key`
html = macro()
但有一些问题:
@app.context_processor
def inject_global_template_context():
return dict(global_key=global_value)
不起作用......(但如果你渲染整个模板,它就有效。)
那么,如何定义这样的全局背景?
提前致谢!!!
答案 0 :(得分:1)
现在我找到了一个决定。 如 @ app.context_processor 装饰器不起作用,我以其他方式将自定义全局变量注入模板:
app.jinja_env.globals.update(global_key1=global_value1,
global_key2=global_value2,
global_key3=global_value3)
也许这不是解决我问题的最佳方法,但它现在可以正常工作:)
答案 1 :(得分:0)
您可以使用
而不是使用get_template_attribute
(其中没有注入全局变量)
from flask import current_app
tmpl = current_app.jinja_env.get_template(template_name)
mod = tmpl.make_module({'global_key': global_value}) # global variables are injected manually
getattr(mod, macro_name)()