Доступ к макроконтексту в Jinja2

Я хочу получить доступ к переменным в пространстве имен макросов 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 в a, говоря, что он не определен в контексте. Интересно, это потому, что контекст должен быть контекстом шаблона, а не макроса?

В любом случае, есть ли способ получить доступ к контексту макроса?


person Ethan Keller    schedule 27.03.2018    source источник


Ответы (1)


Похоже, вы пытаетесь получить доступ к своему глобальному контексту Jinja из пространства имен макросов. Для этого вы должны импортировать свои макросы в каждый из ваших шаблонов «с контекстом».

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

person Community    schedule 19.02.2019