Вложенные блоки в шаблонах Django

Шаблон master в моем приложении Django выглядит следующим образом:

{% block parent %}
 Some text...
 {% block child %}
 Default content here...
 {% endblock child %}
 ...some more text
{% endblock parent %}

Теперь этот шаблон должен быть перезаписан таким образом, чтобы был изменен блок child:

{% extends "master.html" %}
{% block child %}
 New content here...
{% endblock child%}

Однако рендеринг остается неизменным (печать "содержимого по умолчанию здесь..." ). Я пропустил что-то очевидное или вложенные блоки невозможно? (Или, нарушая принцип DRY, мне нужно переопределить блок parent?)

Изменить: Я работаю с Django 1.1, если это имеет значение.

2 ответа

ОК, это ошибка в системе шаблонов Django. Для большинства других случаев, Бен Джеймс прав (см. Его комментарий к моему вопросу выше).

В моем случае блок child находился внутри блока {% ifnotequal a b %}, и это разрушает наследование блоков. Я считаю, что это ошибка, поскольку для таких операций существуют десятки случаев естественного использования.

Соответствующий билет.


Сделайте это:

{% extends "master.html" %}
{% block parent %}
 {% block child %}
 New content here...
 {% endblock child%}
{% endblock parent %}

licensed under cc by-sa 3.0 with attribution.