2009-05-05 11 views
0

Ich möchte nur ID-Attribut des Body-Tags in Kind-Vorlage zu definieren. Erste Lösung funktioniert perfekt:Wie mit Variablen in Vorlagen Vererbung umgehen

base.html:

[body{% block bodyid %}{% endblock %}] 

child.html:

{% block bodyid %} id="myId"{% endblock %} 

Es ist einfach und cool! Aber ich mag es nicht, ID = "myId" in jeder Kindvorlage zu zeigen. Ich möchte einfach den Wert 'myId' an die Elternvorlage senden, wo sie an id = "...." gesetzt wird. Also, erfinde ich diese Methode:

base.html:

[body{% block bodyid %} id={{ bodyid }}{% endblock %}] 

child.html:

{% block bodyid %} 
    {% with 'myId' as bodyid %} 
     {{ block.super }} 
    {% endwith %} 
{% endblock %} 

Aber es ist schrecklich und langweilig erste Lösung zu vergleichen. Gibt es eine gute Methode, dies zu tun?

Dieses Problem ist tiefer, als bodyId zu verwalten. Ich denke, ich versuche, Subtemplate-System durch Standard-Django-Vorlage Vererbung zu finden und zu organisieren.

Antwort

2

In der Basisvorlage:

<body id="{% block bodyid %}{% endblock %}"> 

Im Kind Vorlage:

{% block bodyid %}myId{% endblock %} 

Wenn ich Ihre Frage richtig verstanden habe, sollte dies ausreichen, um zu erreichen, was Sie wollen; Senden Sie nur die aktuelle ID (myId) an die Basisvorlage.

+0

Dies ist die Methode, die ich die ganze Zeit verwenden – Rasiel

+0

Jahr, aber ich will nicht verlassen leer id = "", wenn ich nicht definieren {{bodyId}} in child.html – ramusus

+0

würde ich eine Standard-ID hinzufügen wie folgt: – Eraldo

0

Wenn Sie dies bevorzugen, setzen Sie dies über Ihren Code - damit Ihre IDs Teil Ihres Kontextobjekts sind und daher nicht in die untergeordneten Vorlagen eingegeben werden müssen, sondern nur in die Ansichten, die sie aufrufen.

Anschließend können Sie Ihre Basisvorlage sagen die ID aus dem Kontext-Objekt zu erhalten, oder besser gesagt verwenden Sie einfach die Vorlage Syntax für sie:

<body id="{{ body_id }}"> 

Persönliche Vorlieben hier natürlich, und es hängt von der Struktur Ihre Vorlagen und Ansichten, aber so wie ich es machen würde.

+0

Jahr, aber ich möchte nicht leer bleiben id = "", wenn ich nicht {{body_id} definiere } in meiner Sicht oder child.html – ramusus

Verwandte Themen