假设有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?
答案 0 :(得分:9)
正如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模板。
答案 1 :(得分:1)
是的,您可以扩展不同或相同的模板。
例如:
{% extends "base.html" %}
{% block content %}
<h1>Content goes here</h1>
{% include 'base.html' %}
{% endblock %}