jinja2 загрузить файл шаблона из шаблона - PullRequest
21 голосов
/ 07 сентября 2011

Есть ли способ загрузить шаблон jinja2 из другого файла шаблона? Что-то вроде

{{ render_template('path/to/file.html') }}

У меня есть несколько фрагментов, которые я хочу использовать повторно, поэтому для меня важно иметь эту функцию.

Ответы [ 3 ]

31 голосов
/ 07 сентября 2011

{% include "file" %} делает это.См. jinja2 документы для получения дополнительной информации.

7 голосов
/ 07 сентября 2011

Используйте тег extends или include, в зависимости от того, как вы хотите создать многофайловые представления.

5 голосов
/ 09 августа 2018

Вы должны создать файлы шаблонов с {% macro -%} s и использовать {% import "file" as file %}, чтобы использовать макросы в других файлах шаблонов.См. документы.

Вот пример:

<!- in common_macros.html ->
{% macro common_idiom1(var1, var2, ... varN) -%}
    <!- your idiom, where you can use var1 through varN ->
{%- endmacro %}
<!- in my_template.html ->
{% import "common_macros.html" as idioms %}
{{ idioms.common_idiom1(a, b, ... N) }}

В частности, этот ответ позволяет оператору передавать аргументы своим макросам, подобно поведению, которое он желал, например:как работает render_template (простое включение файла, как было сказано выше в предыдущих ответах, не приводит к тому же поведению, что и render_template).

Обычно это лучше, чем создавать новый шаблон для каждой идиомы или использовать наследование,решение для особого случая (что если вы хотите использовать фрагмент в одном шаблоне несколько раз)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...