Django中一个模板可以扩展多个模板吗?

问题描述 投票:0回答:3

假设有

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?

python django django-templates multiple-inheritance extends
3个回答
23
投票

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 模板。


3
投票

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

例如:

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

    <h1>Content goes here</h1>

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

multiple template in same page


0
投票

除其他答案外,一个模板只能使用 {% extends %} 扩展一个模板,但不能扩展多个模板。

因此,如果一个模板尝试使用

{% extends %}
扩展多个模板,如下所示:

# "templates/index.html"

{% extends "base1.html" %}
{% extends "base2.html" %}

然后,出现以下错误:

'extends' 不能在同一模板中出现多次

© www.soinside.com 2019 - 2024. All rights reserved.