我对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>
注意,该内容出现两次,一次通过宏呈现,另一次直接呈现在上面,就像在内容块中定义的一样。
HTM
. 我很想避免这个块被渲染两次——它应该被输入到宏中并且只通过宏渲染。
我似乎可以通过转动来“绕过”它
HTM
添加到子模板中(通过添加
extends
标记在其顶部)的空基模板。
也许我对这里的概念缺乏理解:块不是变量-我明白。如果没有
延伸
标签,我假设模板被当作一个基本模板。如果没有子模板或其他指令,我猜该块只是按原样呈现,然后,可以说是第二次被宏拾取-正确吗?
如何以一种明智的方式解决这个问题,即如何通过扩展空的基础模板来处理这个问题?是否有其他类型的块或变量可以满足我的需要?