Доступ к глобальным атрибутам из макроса в Jinja2 - PullRequest
7 голосов
/ 17 февраля 2011

Я широко использую макросы в Jinja2 и нахожу их очень СУХОЙ; но меня беспокоит одна вещь: как получить доступ к глобальным вещам из макросов? Было бы здорово, если бы я мог каким-то образом получить доступ к url_for () из макроса.

1 Ответ

8 голосов
/ 18 февраля 2011

Вы можете сделать любой вызываемый объект доступным в среде 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() 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...