2009-03-01 6 views
4

Je voudrais faire ce qui suit:Comment tester l'utilisation d'un bloc de template django?

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

... Cependant, les tests de l'utilisation actuelle d'un bloc par des modèles plus bas dans la chaîne d'héritage ne semble pas fonctionner.

Y a-t-il d'autres conditions qui pourraient faire cela?

Répondre

4

La langue du modèle ne fournit pas exactement ce que vous cherchez. Les modèles enfants peuvent appeler le bloc parent avec {{ block.super }}, mais les modèles parents ne peuvent pas référencer les modèles enfants.

Votre meilleur pari sera probablement d'écrire un tag de modèle personnalisé. Le manuel du modèle contient deux sections à examiner.

D'abord, Parsing until another block tag. Cela vous donnera les bases de la façon d'analyser.

Deuxièmement, Parsing until another block tag and saving contents. En plaçant une balise de bloc à l'intérieur de la balise personnalisée, vous pouvez détecter le contenu et l'envelopper comme il convient. Cela devrait fonctionner, parce que je crois que l'étiquette de bloc interne sera analysée en premier. Si cela ne fonctionne pas, sous-classez la balise de modèle de bloc existante fournie par django pour implémenter votre magie spéciale.

+0

Merci ... Je vais devoir travailler et apprendre à trouver une réponse comme vous l'avez recommandé. Merci encore. –

Questions connexes