0

インポートされたテンプレートにコンテキスト変数が適用されていないようです。多分私は何か間違ったことをしていますか?

マクロを含むテンプレートと、マクロをインポートして使用する別のテンプレートがあります。

macro = ("{% macro some_macro() %}"
         "{{ func('a') }}"
         "{% endmacro %}")
use_macro = ("{% from 'macro' import some_macro %}"
             "{{ some_macro() }}")
loader = jinja2.loaders.DictLoader({'macro': macro,
                                    'template': use_macro})
env = jinja2.Environment(loader=loader)
template = env.get_template('template')

コンテキストでテンプレートをレンダリングしようとすると、定義さfuncれていないため失敗します:func

rendered = template.render(func=lambda x: x)

funcグローバルにある場合は機能します:

env.globals.update(func=lambda x: x)
rendered = template.render()

これは意図したとおりですか、それともバグのように見えますか?

4

1 に答える 1

5

コンテキストでインポートを使用します。

use_macro = ("{% from 'macro' import some_macro with context %}"
             "{{ some_macro() }}")
于 2013-08-17T18:04:36.023 に答える