假设有
base_a.html
, base_b.html
, a.html
, b.html
, c.html
.
a.html
延伸base_a.html
和b.html
延伸base_b.html
.c.html
必须同时扩展 base_a.html
和 base_b.html
.
如果你认为
base_a.html
包含回复功能,base_b.html
包含搜索功能,就更容易理解这种情况。
我可以在 Django 模板中使用多重继承吗?
还是我必须使用 include 而不是 extends?
如docs所述,
如果您在模板中使用
,它必须是该模板中的第一个模板标签。{% extends %}
也就是说,一个
{% extends %}
标签不能放在第二行,也就是说,你不能有两个{% extends %}
标签。
您的案件可以通过
{% include %}
标签轻松解决。例如:
在
a.html
:
{% include 'base_a.html' %}
在
b.html
:
{% include 'base_b.html' %}
在
c.html
:
{% include 'base_a.html' %}
{% include 'base_b.html' %}
当然,
base_a.html
和 base_b.html
应该只包含您要重用的特定块,而不是完整的 HTML 模板。
是的,您可以扩展不同或相同的模板。
例如:
{% extends "base.html" %}
{% block content %}
<h1>Content goes here</h1>
{% include 'base.html' %}
{% endblock %}
除其他答案外,一个模板只能使用 {% extends %} 扩展一个模板,但不能扩展多个模板。
因此,如果一个模板尝试使用
{% extends %}
扩展多个模板,如下所示:
# "templates/index.html"
{% extends "base1.html" %}
{% extends "base2.html" %}
然后,出现以下错误:
'extends' 不能在同一模板中出现多次