django模板扩展 - 除了一个模板之外的所有模板

时间:2016-07-04 06:15:16

标签: django django-templates

我有一个html,我想在所有页面中出现,除了一个。如果不是这个页面,我会把它放在base.html并扩展。

除了将代码单独放在所有必需的页面之外,还有其他方法吗?

2 个答案:

答案 0 :(得分:1)

你可以将它放入一个被忽略的块中,以便忽略它。例如:

<强> base.html文件

{% block content %}
    <div>
        This should show on all pages except for this one
    </div>
{% endblock content %}

included-page.html (div将包含在此页面中)

{% extends 'base.html' %}

ignored-page.html (此页面将忽略div)

{% extends 'base.html' %}

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

答案 1 :(得分:1)

来自模板继承docs

模板引擎会注意到base.html中的 {%block%} 标记,并将这些块替换为子模板的内容。

<强> BUT

  

如果子模板没有定义块,则来自的值   而是使用父模板。 a。中 {%block%} 标记内的内容   父模板始终用作后备。

因此,在这种情况下,您可以在base.html中使用 {%block%} 标记。

{% block content %}
 <!-- Your content here-->
{% endblock %}

您不必在每个模板中定义该块,因为父 {%block%} 用作后备。

{% extends 'base.html' %}

因此,在您的例外情况下,只需定义 {%block%} 标记,不要包含任何数据或其他内容。

{% extends 'base.html' %}

{% block content %}
 <!-- Nothing goes here -->
{% endblock content %}