Вложенные блоки в шаблонах Django - PullRequest
22 голосов
/ 14 декабря 2009

Шаблон 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%}

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

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

Ответы [ 2 ]

11 голосов
/ 14 декабря 2009

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

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

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

1 голос
/ 14 декабря 2009

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

{% extends "master.html" %}

{% block parent %}
    {% block child %}
        New content here...
    {% endblock child%}
{% endblock parent %}
...