从Jinja2中的宏内部访问全局属性

Jur*_* V. 7 python jinja2

我一直在Jinja2中广泛使用宏,并发现它们非常干燥; 但是有一件事困扰着我:如何从宏中访问全局内容?如果我能以某种方式从宏中本地访问url_for(),那将是非常好的.

jd.*_*jd. 8

您可以在Jinja环境中进行任何可调用:

jinja_env = Environment(...)
jinja_env.globals['url_for'] = url_for
Run Code Online (Sandbox Code Playgroud)

例如,在shell中输出u'foobar':

from jinja2 import Environment
env = Environment()
env.globals['foo'] = lambda: "foobar"
env.from_string('{% macro bar() %}{{ foo() }}{% endmacro %}{{ bar() }}').render() 
Run Code Online (Sandbox Code Playgroud)