Использовать блок кода в нескольких местах в jinja2

у меня есть этот фрагмент html, который нужно использовать во многих местах в шаблонах jinja2:

<div class="usedalot">{{  somevalue }}</div>

например, в template1.HTML-код, template2.формат html. template3.HTML, этот код повторяется в нескольких местах

<!-- template1.html, template2.html. template3.html -->
<div class="usedalot">{{  somevalue }}</div>
......
<div class="usedalot">{{  somevalue }}</div>
....
<div class="usedalot">{{  somevalue }}</div>
......

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

1 ответов


то, что вы ищете называется макрос.

макросы помещаются в отдельные файлы (например, macros.html).

{% macro usedalot(somevalue) %}
    <div class="usedalot">{{ somevalue }}</div>
{% endmacro %}

затем вы можете импортировать макросы в другие шаблоны

{% from 'macros.html' import usedalot %}

а затем использовать их при необходимости

{{ usedalot(1) }}

выводится

<div class="usedalot">1</div>