在Jinja2宏中访问全局属性
我在Jinja2中大量使用宏,觉得它们非常简洁高效。但有一件事让我困扰:如何在宏里面访问全局的东西?如果我能直接在宏中使用url_for()就太好了。
1 个回答
8
你可以在Jinja环境中使用任何可以调用的函数:
jinja_env = Environment(...)
jinja_env.globals['url_for'] = url_for
比如,这个代码在命令行中会输出u'foobar':
from jinja2 import Environment
env = Environment()
env.globals['foo'] = lambda: "foobar"
env.from_string('{% macro bar() %}{{ foo() }}{% endmacro %}{{ bar() }}').render()