Como testar o uso de um bloco de modelo Django?
-
03-07-2019 - |
Pergunta
Eu gostaria de fazer o seguinte:
{% if appnav %}
<hr />
<div id="appnav">
<ul class="tabs">
{% block appnav %}{% endblock %}
</ul>
</div>
{% endif %}
... No entanto, testar o uso atual de um bloco por modelos mais abaixo na cadeia de herança não parece funcionar.
Existe algum outro condicional que possa fazer isso?
Solução
A linguagem do modelo não fornece exatamente o que você procura.Os modelos filhos podem chamar o bloco pai com {{ block.super }}
, mas os modelos pai não podem fazer referência a modelos filhos.
Sua melhor aposta provavelmente será escrever uma tag de modelo personalizada.Existem duas seções no manual do modelo para revisão.
Primeiro, Analisando até outra tag de bloco.Isso lhe dará o básico de como analisar.
Segundo, Analisando até outra tag de bloco e salvando o conteúdo.Ao colocar uma tag de bloco dentro da tag personalizada, você pode detectar o conteúdo e envolvê-lo conforme apropriado.Isso deve funcionar, porque acredito que a tag do bloco interno será analisada primeiro.Se isso não funcionar, crie uma subclasse da tag de modelo de bloco existente fornecida pelo Django para implementar sua mágica especial.