7

私はJinja2でマクロを広範囲に使用してきましたが、マクロは非常に乾燥しているようです。しかし、私を悩ませていることが1つあります。それは、マクロからグローバルなものにアクセスする方法です。どういうわけかマクロからネイティブにurl_for()にアクセスできれば、本当に素晴らしいでしょう。

4

1 に答える 1

8

Jinja 環境で任意の callable を使用できるようにすることができます。

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() 
于 2011-02-17T22:17:27.490 に答える