Django模板覆盖

时间:2019-10-22 08:36:58

标签: django django-templates

我想知道,在Django中使用模板时,我是否能够扩展其他基本模板并覆盖基本模板中的某些块。所以我的问题是当我重写时,被覆盖的块中的代码是否仍然会被渲染然后被覆盖,还是永远不会运行而仅呈现新的块?

示例:

base.html

{% block menu %}
    {% for option in menu %}

       ...Create the menu entries

    {% endfor %}
{% endblock menu %}

extender.html

{% extends base.html %}

{% block menu %}
    ... some other tags
{% endblock menu %}

在这种情况下,如果base.html中的原始for循环被覆盖了,它是否会运行?

1 个答案:

答案 0 :(得分:2)

据我所知,除非您要在扩展模板中保留其代码,否则该块将被覆盖。

如果要保留原始块,可以使用{{ block.super }}

base.html

[...]
<body>
    {% block header %}
        base header content
    {% endblock %}
    [...]
</body>

extended.html

{% extends "base.html" %}
{% block header %}
    {{ block.super }}
    new content added
{% endblock %}
[...]

G。