{% extends "Flow/base.html" %}
{% if no_tracking %}
{% block head %}
{% include "Flow/common/tracking/disabled.html" %}
{% endblock %}
{% endif %}
以上代码段覆盖了head
中的base.html
块,即使no_tracking
是False
。如何使这种行为成为条件?
我想到了这个
{% block head %}
{% if no_tracking %}
{% include "Flow/common/tracking/disabled.html" %}
{% else %}
<!-- How can I get "head" of base.html here? -->
{% endif %}
{% endblock %}
但这也会覆盖head
中的base.html
。
head
中的 base.html
不为空,当no_tracking为False时,它包含必须在页面上的脚本。
我可以在base.html
中覆盖它们,但是base.html
没有no_tracking
的概念,因为那是传递给正在渲染的视图的上下文变量,而不是它扩展的变量。
我该如何解决?
答案 0 :(得分:2)
您可以使用{{ block.super }}
[Django-doc]来获取“父”块呈现的内容:
如果您需要从父模板中获取块的内容,则可以使用
{{ block.super }}
变量。如果要添加到父块的内容而不是完全覆盖它,这将很有用。使用{{ block.super }}
插入的数据将不会自动转义(…),因为如果需要,已经在父模板中转义了该数据。
因此,在这里我们可以使用它向该块添加一些“额外内容”:
{% block head %}
{% if no_tracking %}
{% include "Flow/common/tracking/disabled.html" %}
{% endif %}
{{ block.super }}
{% endblock %}