Django - Can two or more templates be extended by one template?
Solution 1
As stated at the docs,
If you use
{% extends %}
in a template, it must be the first template tag in that template.
That suggests that an {% extends %}
tag cannot be placed in the second line, that is, you cannot have two {% extends %}
tags.
Your case can easily be solved with {% include %}
tags. For example:
In a.html
:
{% include 'base_a.html' %}
In b.html
:
{% include 'base_b.html' %}
In c.html
:
{% include 'base_a.html' %}
{% include 'base_b.html' %}
Of course, base_a.html
and base_b.html
should only contain the specific block you want to reuse, not a full HTML template.
Solution 2
Yes you can extend different or same templates.
For example:
{% extends "base.html" %}
{% block content %}
<h1>Content goes here</h1>
{% include 'base.html' %}
{% endblock %}
Sejin Jeon
Updated on June 13, 2022Comments
-
Sejin Jeon almost 2 years
Let's say there are
base_a.html
,base_b.html
,a.html
,b.html
,c.html
.a.html
extendsbase_a.html
andb.html
extendsbase_b.html
.
Andc.html
has to extend bothbase_a.html
andbase_b.html
.It will be easier to understand this situation if you think
base_a.html
contains reply functionalities andbase_b.html
contains search functionalities.Can I use multiple inheritance in Django template?
Or do I have to use include instead of extends? -
Sejin Jeon over 7 yearsOkay Thanks. It seems it's reasonable to use include.