Вложенные блоки в шаблонах 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, если это имеет значение.
Ответы
Ответ 1
ОК, это ошибка в системе шаблонов Django. Для большинства других случаев, Бен Джеймс прав (см. Его комментарий к моему вопросу выше).
В моем случае блок child
находился внутри блока {% ifnotequal a b %}
, и это разрушает наследование блоков. Я считаю, что это ошибка, поскольку для таких операций существуют десятки случаев естественного использования.
Соответствующий билет.
Ответ 2
Сделайте это:
{% extends "master.html" %}
{% block parent %}
{% block child %}
New content here...
{% endblock child%}
{% endblock parent %}