2016-12-30 7 views
0

Предположим, есть base_a.html, base_b.html, a.html, b.html, c.html.Django - Можно ли расширить два шаблона одним шаблоном?

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 вместо расширений?

+0

Я думаю, что включение может быть лучше подходит. Если вы создаете правильное решение, вам пригодится, если вы начнете использовать некоторый ajax для обновления только этого раздела (возможно, с результатами поиска). base_b.html может быть включен в базу, тогда этот div будет обновляться через ajax-вызов для URL-адреса, который возвращает частичное с функциями поиска и результатами. Надеюсь, это имеет смысл. https://docs.djangoproject.com/en/1.10/ref/templates/builtins/#include – AMG

ответ

3

Как указано в 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 должен содержать только конкретный блок вы вес ant для повторного использования, а не полный HTML-шаблон.

+0

Хорошо спасибо. Кажется, разумно использовать include. –