Как проверить использование шаблона блока django? - PullRequest
4 голосов
/ 02 марта 2009

Я бы хотел сделать следующее:

{% if appnav %}
<hr />
<div id="appnav">
    <ul class="tabs">
        {% block appnav %}{% endblock %}
    </ul>
</div>
{% endif %}

... однако, тестирование текущего использования блока шаблонами, расположенными ниже по цепочке наследования, похоже, не работает.

Есть ли какие-то другие условия, которые могли бы сделать это?

1 Ответ

4 голосов
/ 06 марта 2009

Язык шаблонов не обеспечивает именно то, что вы ищете. Дочерние шаблоны могут вызывать родительский блок с {{ block.super }}, но родительские шаблоны не могут ссылаться на дочерние шаблоны.

Лучше всего будет написать собственный тег шаблона. В руководстве по шаблону есть два раздела для обзора.

Сначала Разбор до другого тега блока . Это даст вам основы синтаксического анализа.

Второй, Разбор до другого тега блока и сохранение содержимого . Поместив тег блока внутри пользовательского тега, вы можете обнаружить содержимое и обернуть его соответствующим образом. Это должно работать, потому что я верю, что внутренний тег блока будет проанализирован первым. Если это не сработает, создайте подкласс существующего тега шаблона блока, предоставленного django, для реализации вашей особой магии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...