Jinja2块嵌套问题

时间:2013-01-23 11:30:57

标签: python flask jinja2

我在项目中使用jinja2作为模板语言。这是简化的模板结构:

base.html文件

{% block content %}{% endblock %}
{% block sidebar %}{% endblock %}

content.html

{% extend 'base.html' %}

{% block content %}
    <div class="content">
        Content
        {% block sidebar %}
            <div class="sidebar">Sidebar</div>
        {% sidebar %}
    </div>
{% endblock %}

content.html 的结果呈现:

<div class="content">
    Content
    <div class="sidebar">Sidebar</div>
</div>
<div class="sidebar">Sidebar</div>

正如您所看到的,sidebar在渲染content.html时出现两次。

问题:

有没有办法避免在sidebar中出现content,将{% block sidebar %}留在{% block content %}内?

1 个答案:

答案 0 :(得分:1)

我认为您的content.html模板无效 - 您明确将侧边栏相关内容放在内容块中,因此它总会出现在那里。此外,您的base.html似乎也无效,它看起来应该更像:

{% block content %}{% endblock %}
{% block sidebar %}{% endblock %}