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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top