Jinja2渲染上下文未应用于导入的模板

sie*_*z0r 0 python jinja2

我注意到上下文变量似乎不适用于导入的模板.也许我做错了什么?

我有一个包含宏的模板和另一个导入宏并使用它的模板.

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')
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试func在上下文中渲染模板时,它失败,因为func未定义:

rendered = template.render(func=lambda x: x)
Run Code Online (Sandbox Code Playgroud)

func在全局变量中它确实有效:

env.globals.update(func=lambda x: x)
rendered = template.render()
Run Code Online (Sandbox Code Playgroud)

这是预期的还是看起来像个bug?

Rem*_*ing 5

在上下文中使用import:

use_macro = ("{% from 'macro' import some_macro with context %}"
             "{{ some_macro() }}")
Run Code Online (Sandbox Code Playgroud)