django - 测试模板中是否存在模板 block

标签 django django-templates

我有一个结构,在我的基本模板中通常在(% block heading %}中有一个页面标题:

base.html

<h2>{% block heading %}{% endblock %}</h2>

大多数情况下,我会通过扩展base的模板来传递这样的标题:

extended-base.html
{% block heading %}Super Cool Page!{% endblock %}

但是,对于特殊页面,我不想显示页面标题:

extended-base-special.html
{% block heading %}{% endblock %}

理想情况下,应排除<h2>标记。现在,我可以使所有扩展模板都包含<h2>标记,但这违反了DRY,因为每个页面的页面级标题都应具有相同的元素。我想做的是这样(似乎不起作用):

base-prefered.html
{% if heading %}
<h2>{% block heading %}{% endblock %}</h2>
{% endif %}

这在模板级别上是否可行,还是我必须为此考虑一下?

最佳答案

你可以把它包起来

{% block noheader %}
  <h2>{% block header %}Super Cool Page!{% endblock header %}</h2>
{% endblock noheader %}

在没有标题的页面上
{% block noheader %}{% endblock %}

关于django - 测试模板中是否存在模板 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2035385/

相关文章:

Django:测试模板是否继承了正确的模板

django - 单元格颜色 Django-Tables2

django - 何时将 Angular 与 Django 结合使用?

django - 如果 django rest 中提供了未经授权的凭据,如何发送自定义响应

django - 无法在 django 模型中添加新字段

Django 2.1 密码重置 View 404

django - 从扩展模板覆盖 `include` d 模板中的 block

python - 如何覆盖 Django 中 ModelForm 的 'type' 属性?

django - 编辑 Django 表单中的现有条目

python - Uncaught ReferenceError : Braintree is not defined