【发布时间】:2016-07-04 06:15:15
【问题描述】:
我有一段 html,我想在所有页面中显示,除了一个。如果不是这个页面,我会把它放在base.html 中并扩展。
除了将代码单独放在所有需要的页面中之外,还有其他方法吗?
【问题讨论】:
我有一段 html,我想在所有页面中显示,除了一个。如果不是这个页面,我会把它放在base.html 中并扩展。
除了将代码单独放在所有需要的页面中之外,还有其他方法吗?
【问题讨论】:
来自模板继承docs,
模板引擎会注意到 base.html 中的 {% block %} 标签,并将这些块替换为子模板的内容。
但是
如果子模板没有定义块,则从 而是使用父模板。 {% 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 %}
【讨论】:
您可以将其放入一个块中,该块会被任何内容覆盖以使其被忽略。例如:
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 %}
【讨论】: