Проблема с тегом include и наследованием в шаблоне Django

Рейтинг: 3Ответов: 1Опубликовано: 27.04.2015

Есть шаблон base.html:

<head>
{% include 'head.html' %}
</head>

Во включенном файле head.html есть блок:

{% block title %}{% endblock %}

В приложении я создаю шаблон, который унаследуется от base.html, в котором хочу вывести переменную в блоке title:

{% extends 'base.html' %}
{% block title %}
  {{title}}
{% endblock %}

Но такая схема не работает - выдает ошибку. Что не так? Если я правильно понимаю, тег include должен включать шаблон в шаблон как его часть, без ограничений.

Ответы

▲ 1

Плохая новость для вас. Вот что написано по этому поводу в документации:

Blocks are evaluated before they are included. This means that a template that includes blocks from another will contain blocks that have already been evaluated and rendered - not blocks that can be overridden by, for example, an extending template.

То есть переопределение содержимого блоков при наследовании шаблона не происходит. Поэтому вы получаете результат о котором написали в комментарии.