在Jinja2宏中访问全局属性

9 投票
1 回答
8657 浏览
提问于 2025-04-16 12:02

我在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() 

撰写回答