给定包含以下内容的base.html文件:
<div class="foo some-content">
...content...
</div>
<div class="bar some-content">
...different content...
</div>
在某些地方使用base.html时,我想包装每个.some-content
div以实现嵌套结构:
<div class="row">
<div class="foo some-content">
...content...
</div>
</div>
<div class="row">
<div class="bar some-content">
...different content...
</div>
</div>
我尝试扩展base.html以使用.row
div包装div:
{% extends base.html %}
{% block wrapper %}
<div class "row">
{{ block.super }}
</div>
{% endblock %}
但是这不起作用,因为我在base.html中使用TemplateSyntaxError
两次block wrapper
:
# Throws TemplateSyntaxError
{% block wrapper %}
<div class="foo some-content">
...content...
</div>
{% endblock %}
{% block wrapper %}
<div class="bar some-content">
...different content...
</div>
{% endblock %}
我意识到我可以将.some-content
div分解为自己的文件,并在其他地方重用它们,但我更喜欢另一条路线。我还按Django template macros中的建议查看了this SO answer,但我认为中间件在这种情况下会有些过分。
我有什么方法可以扩展或重复使用我当前的base.html文件,以便.some-content
div有时包含在.row
div中?
答案 0 :(得分:1)
你可以这样做:
{% with foo as var %}
{% include 'mycontainer.html' %}
{$ endwith %}
{% with bar as var %}
{% include 'mycontainer.html' %}
{$ endwith %}
然后mycontainer.html将是:
<div class="row">
<div class="{{ var }} some-content">
...
</div>
</div>