在Jinja2中访问宏上下文

时间:2018-03-27 16:03:38

标签: python jinja2

我想在contextfunction中访问jinja2宏命名空间中的变量。说我的宏看起来像:

{% macro show_var(a) %}
  {{ show_var_context_function("a") }}
{% endmacro %}

我的上下文功能如下:

@contextfunction
def show_var_context_function(context, var_name_string):
  return context[var_name_string]

现在我认为上下文应该可以访问...这应该存储在我想的上下文中,但是上面的代码会引发一个NameError,说它不是在上下文中定义的。我想知道这是因为上下文应该是模板的上下文而不是宏?

无论如何,有没有办法访问宏的上下文?

1 个答案:

答案 0 :(得分:0)

听起来您想从宏命名空间中访问全局Jinja上下文。为此,必须将宏“带有上下文”导入每个模板。

{% from "_macros.html" import my_macro with context %}