Я довольно новичок в jinja, поэтому, пожалуйста, извините за этот потенциально глупый вопрос ...
У меня есть макрос jinja, расположенный в файле с именем lib.jinja
, который выглядит следующим образом
{% macro some_macro(some_content) %}
<div class="some_class">{{ some_content }}</div>
{%- endmacro %}
Я импортирую его из другого файла с именем content.htm
, который выглядит примерно следующим образом:
{% from "lib.jinja" import some_macro %}
{% block content %}
Some content
{% endblock %}
{{ some_macro(self.some_macro(self.content())) }}
Визуализированный вывод выглядит следующим образом:
Some content
<div class="some_class">Some content</div>
Обратите внимание, что содержимое отображаетсядважды, один раз визуализируется с помощью макроса /, другой раз - непосредственно выше - отображается так, как это было определено в блоке с именем content в content.htm
.Я хотел бы избежать того, чтобы блок обрабатывался дважды - он должен передаваться в макрос и обрабатываться только через него.
Мне кажется, что я могу "обойти" его, превратив content.htm
вдочерний шаблон (путем добавления тега extends
вверху) пустого базового шаблона.
Возможно, у меня нет понимания понятий здесь: блок не является переменной - я понял.Если тега extends
нет, шаблон считается базовым шаблоном.Если нет дочерних шаблонов или других директив, я думаю, блок просто отображается как есть, а затем, во второй раз, так сказать, подобран макросом - правильно?
Как я могу решить эту проблему разумным образом, то есть, как я могу справиться с этим, кроме как путем расширения пустого базового шаблона?Есть ли другой тип блока или переменной, которые соответствуют моим потребностям?