Как проверить использование блока шаблона Django?

StackOverflow https://stackoverflow.com/questions/600806

  •  03-07-2019
  •  | 
  •  

Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

Первый, Разбор до следующего блочного тега.Это даст вам основы синтаксического анализа.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top