Frage

Ich will nur id-Attribut des Body-Tages in Kind Vorlage definieren. Erste Lösung funktioniert perfekt:

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 jedem Kind Vorlage zeigen. Ich will einfach nur Wert ‚myid‘ Mutter Vorlage schicken, wo es zu id setzen = „....“. Also, ich erfinde 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 verwalten. Ich denke, ich versuche Subtemplate System durch Standard django Vorlage Erbe zu finden und zu organisieren.

War es hilfreich?

Lösung

In der Basisvorlage:

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

In der Kind-Vorlage:

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

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

Andere Tipps

Sie, wenn Sie möchten, setzen Sie diese über Ihren Code - so dass Ihr ids Teil Ihres Kontextobjekts ist, und dafür erforderlich ist, nicht in den Kindern Vorlagen eingegeben wird, nur die Ansichten, die sie anrufen

.

Sie können dann Ihre Basisvorlage sagen die ID aus dem Kontext-Objekt zu erhalten, oder vielmehr nur die Vorlage Syntax für sie verwenden:

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

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top