我想知道,在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循环被覆盖了,它是否会运行?
答案 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。