Comment tester l'utilisation d'un bloc de modèle Django?
-
03-07-2019 - |
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?
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.