Импорт / включение назначенных переменных в Jinja2 - PullRequest
14 голосов
/ 10 июня 2010

В 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.

Спасибо за чтение.

Brian

1 Ответ

21 голосов
/ 17 июня 2010

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

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

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

...