0

在烧瓶中,我们可以从 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)

不起作用...(但如果您渲染整个模板,它会起作用)。

那么,如何定义这样的全局上下文呢?

提前致谢!!!

4

2 回答 2

1

现在我已经找到了一个决定。如@app.context_processor装饰器不起作用,我以其他方式将自定义全局变量注入模板:

app.jinja_env.globals.update(global_key1=global_value1,
                             global_key2=global_value2,
                             global_key3=global_value3)

也许这不是解决我的问题的最佳方法,但现在可以正常工作:)

于 2013-10-22T03:26:54.587 回答
1

而不是使用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)()

学分:https ://python5.com/q/txwccsgf

于 2021-01-17T07:20:55.910 回答