Django - 一个模板可以扩展两个或更多模板吗?

时间:2016-12-30 13:55:38

标签: django templates multiple-inheritance extends

假设有base_a.htmlbase_b.htmla.htmlb.htmlc.html

a.html延伸base_a.htmlb.html延伸base_b.html c.html必须同时延长base_a.htmlbase_b.html

如果您认为base_a.html包含回复功能且base_b.html包含搜索功能,则会更容易理解这种情况。

我可以在Django模板中使用多重继承吗? 或者我是否必须使用include而不是extends?

2 个答案:

答案 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.htmlbase_b.html应该只包含您要重复使用的特定块,而不是完整的HTML模板。

答案 1 :(得分:1)

是的,您可以扩展不同或相同的模板。

例如:

{% extends "base.html" %}
{%     block content     %}

    <h1>Content goes here</h1>

{% include 'base.html' %}
{% endblock %}

multiple template in same page