Мой совет - переключиться на Jinja2.Тег include
в основном такой же, но у вас также есть тег macro
, который дает вызываемый блок, который можно легко использовать с переменными.
Некоторые вариации тега include:
{% include "sidebar.html" ignore missing %}
{% include "sidebar.html" ignore missing with context %}
{% include "sidebar.html" ignore missing without context %}
{% include ['page_detailed.html', 'page.html'] %}
{% include ['special_sidebar.html', 'sidebar.html'] ignore missing %}
С макросами вы можете делать что-то вроде этого:
{% macro input(name, value='', type='text') -%}
<input type="{{ type }}" value="{{ value|e }}" name="{{ name }}">
{%- endmacro %}
Что можно назвать так:
{% import 'forms.html' as forms %}
<dl>
<dt>Username</dt>
<dd>{{ forms.input('username') }}</dd>
<dt>Password</dt>
<dd>{{ forms.input('password', type='password') }}</dd>
</dl>
Предполагая, что файл с макросом равен forms.html
,Вы также можете поместить макрос в тот же файл, чтобы вам не пришлось импортировать.