Django: Wie erhält man den Namen der gerenderten Vorlage?

7

Ich implementiere ein bootstrap navbar wie in diesem Beispiel gezeigt hier

Elemente in einer Navigationsleiste sind <li>'s , der "ausgewählte" Eintrag hat das Attribut class="active" :

%Vor%

In Django befinden sich diese Elemente in einer Vorlage, die von allen Vorlagen eingeschlossen wird, die die Navigationsleiste anzeigen sollen. Ich denke darüber nach, es so zu machen:

%Vor%

Ich würde gerne wissen, ob es einen eingebauten Weg gibt, um template_name zu erhalten (das heißt, die Vorlage wird gerendert, wie sie an render_to_response() übergeben wurde, in views.py )

Sicher, ich könnte eine template_name Variable explizit zu render_to_response() hinzufügen, was das Problem lösen würde. Aber wenn ich an DRY denke, sollte das nicht nötig sein.

    
E.Z. 09.10.2013, 09:54
quelle

4 Antworten

14

Normalerweise verwende ich ein benutzerdefiniertes Vorlagen-Tag für diesen Anwendungsfall, bei dem eine Klasse zur aktiven Registerkarte, zum Menüelement usw. hinzugefügt wird.

%Vor%

Und hier ist ein Ausschnitt aus dem oberen Navigationsbereich:

%Vor%     
Kevin Stone 09.10.2013, 10:57
quelle
3

Ich benutze:

%Vor%

Es ist ein wenig kürzer und robuster, wenn sich der URI ändert. Achte nur darauf, ob mehr als ein Pfad verwendet wird.

    
renejsum 20.06.2016 16:58
quelle
2

Es gibt einen viel schnelleren Weg, ohne ein benutzerdefiniertes Template-Tag zu erstellen!

%Vor%

sei nur auf request.path aufmerksam. Es kann mit einem Schrägstrich-Symbol am Anfang oder ohne am Ende des Pfades sein!

    
prog.Dusan 30.08.2014 16:09
quelle
0

Appending prog.Dusans Antwort für Django 1.7

%Vor%

Am besten fügen Sie es zur Basisvorlage hinzu, sodass Sie es nur einmal tun müssen.

Wie ich diese Version mehr als Kevin Stones , weil Sie der Vorlage fast gleichen Code hinzufügen müssen und nicht brauche doch ein Template-Tag.

    
sharpshadow 10.06.2015 20:35
quelle