2009-03-01 4 views
4

Ich möchte folgendes tun:Wie testet man die Verwendung eines Django-Vorlagenblocks?

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

... aber die Prüfung für die vorliegende Verwendung eines Blocks von Vorlagen weiter unten in der Vererbungskette nicht zu funktionieren scheint.

Gibt es eine andere Bedingung, die dies tun könnte?

Antwort

4

Die Vorlagensprache bietet nicht genau das, wonach Sie suchen. Untergeordnete Vorlagen können den übergeordneten Block mit {{ block.super }} aufrufen, aber übergeordnete Vorlagen können keine untergeordneten Vorlagen referenzieren.

Ihre beste Wette wird wahrscheinlich sein, ein benutzerdefiniertes Template-Tag zu schreiben. Das Vorlagenhandbuch enthält zwei Abschnitte zum Überprüfen.

Zuerst Parsing until another block tag. Dadurch erhalten Sie die Grundlagen zum Parsen.

Sekunde, Parsing until another block tag and saving contents. Indem Sie ein Block-Tag innerhalb des benutzerdefinierten Tags platzieren, können Sie Inhalte erkennen und entsprechend umbrechen. Dies sollte funktionieren, weil ich glaube, dass das innere Block-Tag zuerst geparst wird. Wenn das nicht funktioniert, unterlasse das existierende Blockschablonen-Tag, das von django zur Verfügung gestellt wird, um deine spezielle Magie zu implementieren.

+0

Danke ... Ich muss etwas arbeiten und lernen, eine Antwort zu finden, wie Sie es vorgeschrieben haben. Danke nochmal. –