Jinja2块嵌套问题 [英] Jinja2 block nesting issue
问题描述
我在项目中使用 jinja2 作为模板语言。这里是简化的模板结构:
base.html :
{%block content%} {%endblock%}
{%block sidebar%} {%endblock%}
$ b
content.html :
{%extend' base.html'%}
{%block content%}
< div class =content>
Content
{%block sidebar%}
< div class =sidebar>边栏< / div>
{%sidebar%}
< / div>
{%endblock%}
content.html render:
< div class =content>
Content
< div class =sidebar>边栏< / div>
< / div>
< div class =sidebar>边栏< / div>
如您所见,存在 sidebar
两次渲染 content.html
。
问题: 有没有办法避免出现<$在$ 模板是无效的 - 你明确定位侧边栏相关的内容在内容块,所以它会在那里出现。此外,您的base.html似乎也是无效的,它应该看起来更像是: I am using jinja2 as a template language in my project. Here is simplified templates structure: base.html: content.html: And the result of content.html render: As you may see, Question: Is there a way to avoid appearance of the I think your content.html template is invalid - you're clearly positioning sidebar related content inside the content block, so it will allways appear there. Also, your base.html seems invalid as well, it should look more like:
这篇关于Jinja2块嵌套问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
$ b $ pre $%block%%{%endblock %}
{%block sidebar%} {%endblock%}
{% block content %}{% endblock %}
{% block sidebar %}{% endblock %}
{% extend 'base.html' %}
{% block content %}
<div class="content">
Content
{% block sidebar %}
<div class="sidebar">Sidebar</div>
{% sidebar %}
</div>
{% endblock %}
<div class="content">
Content
<div class="sidebar">Sidebar</div>
</div>
<div class="sidebar">Sidebar</div>
sidebar
is present twice at rendered content.html
. sidebar
in content
, leaving {% block sidebar %}
inside {% block content %}
?{% block content %}{% endblock %}
{% block sidebar %}{% endblock %}