Question

Je voudrais faire ce qui suit:

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

... cependant, le test d'utilisation actuelle d'un bloc par modèles tout au long de la chaîne d'héritage ne semble pas fonctionner.

Y a-t-il une autre condition qui pourrait le faire?

Était-ce utile?

La solution

Le langage de modèle ne fournit pas exactement ce que vous recherchez. Les modèles enfants peuvent appeler le bloc parent avec {{block.super}} , mais les modèles parents ne peuvent pas faire référence à des modèles enfants.

Votre meilleur choix sera probablement d'écrire une balise de modèle personnalisé. Le manuel de modèles contient deux sections à examiner.

Tout d'abord, Analyse jusqu'à une autre balise de blocage . Cela vous donnera les bases pour analyser.

Deuxièmement, Analyse jusqu'à une autre étiquette de blocage et enregistrement du contenu . En plaçant une balise de bloc dans la balise personnalisée, vous pouvez détecter le contenu et l’envelopper comme il convient. Cela devrait fonctionner, car je crois que la balise de bloc interne sera analysée en premier. Si cela ne fonctionne pas, subdivisez la balise de modèle de bloc existante fournie par django pour mettre en œuvre votre magie spéciale.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top