我对神社很陌生,所以请原谅这个可能很愚蠢的问题......
我有一个 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
标签,我假设模板被视为基本模板。如果没有子模板或其他指令,我猜该块只是按原样呈现,然后可以说第二次被宏拾取 - 对吗?
我怎样才能以理智的方式解决这个问题,即除了扩展一个空的基本模板之外,我怎么能处理这个问题?是否有另一种类型的块或变量可以满足我的需要?