Подтвердить что ты не робот

Импортировать/включить назначенные переменные в Jinja2

В Jinja2, как можно получить доступ к назначенным переменным (т.е. {% set X=Y %}) в файлах, включенных с помощью include?

Я ожидаю, что следующее будет работать с двумя файлами Jinja2:

A.jinja:

Stuff
{% include 'B.jinja' -%}
B has {{ N }} references

B.jinja:

{% set N = 12 %}

Я ожидаю, что A.jinja, когда скомпилирован с Jinja2, будет производить следующий вывод:

Stuff 
B has 12 references

Однако он производит:

Stuff
B has  references

Я был бы очень благодарен за любые сведения о том, как получить доступ к переменным Jinja2, таким как N выше, в файле, который содержит файл, в котором установлен N.

Спасибо, что прочитали.

Брайан

4b9b3361

Ответ 1

Есть разница между include и import, хотя вы должны иметь возможность делать оба.

  • include 'B.jinja просто отображает шаблон и игнорирует любые назначения переменных или макросы внутри него.
  • import 'B.jinja' as B, импортирует B, как если бы это был модуль, поэтому вы должны выводить B.N.
  • from 'B.jinja' import N напрямую импортирует переменную N.

Измените свою линию импорта на последнюю опцию и посмотрите, не исправляет ли она это. Если вам нужна дополнительная помощь, просмотрите документацию.