Wenn ich eine Sitzungsvariable in Django setze, wie:
request.session["name"] = "name"
Gibt es eine Möglichkeit, aus einer Vorlage heraus darauf zuzugreifen, oder muss ich es aus einer Ansicht heraus abrufen und dann an eine Vorlage übergeben?
Fragen, weil ich ungefähr 10 kleine Sitzungsvariablen habe, auf die ich innerhalb einer Vorlage zugreifen möchte, und das Übergeben aller 10 aus der Ansicht an die Vorlage kann etwas chaotisch werden.
(Ich muss Sitzungsvariablen verwenden, da es sich um ein HttpResponseRedirect handelt, aber das Speichern der Variablen in einer Datenbank ist für meine Zwecke zu viel des Guten.)
Also - eine Möglichkeit, Sitzungsvariablen direkt in einer Vorlage abzurufen?
HttpResponse
Klasse befasst sich überhaupt nicht mit Vorlagen, daher scheint die Frage nicht relevant zu sein ...request.session
ist ein Wörterbuch wie jedes andere, daher verwenden Sie einfach den normalen Vorlagenmechanismus für Attribute und Mitglieder:Vergessen Sie nicht, die Anforderung an den Vorlagenkontext zu übergeben, oder stellen Sie noch besser sicher, dass Sie RequestContext verwenden und den Anforderungskontextprozessor aktiviert haben. Siehe die Dokumentation .
quelle
Ich verwende Django 1.9 (März 2016) und um
{{ request.session.name}}
zur Arbeit zu kommen, haben meine Einstellungen Folgendes:Der Unterschied zu den vorherigen Antworten ist:
'django.core.context_processors.request'
wurde'django.template.context_processors.request'
quelle
django.template.context_processors.request
bereits in der Einstellungsdatei: DSie können eine
request
Variable an eine Vorlage übergeben und dort verwenden:quelle
Erst
request.session.keys()
dann druckenSie erhalten diese beiden Sitzungsvariablen.
quelle
Die einfachste Implementierung ist die Verwendung der if-Schleife:
quelle
In Ihren Settins.py
Ihre Ansicht, vielleicht so aussehen.
quelle
Fortsetzung der Antwort von @Ludwik Trammer: Hinzufügen von TEMPLATE_CONTEXT_PROCESSORS
Fügen Sie für django 1.6 in settings.py TEMPLATE_CONTEXT_PROCESSORS hinzu, indem Sie auf den folgenden Code verweisen, und verwenden Sie ihn dann
{{ request.session.name }}
in Vorlagendateien.Referenz https://docs.djangoproject.com/de/1.6/ref/settings/#std:setting-TEMPLATE_CONTEXT_PROCESSORS
Bitte beachten Sie, dass Sie diesen vollständigen Code in den Einstellungen verwenden sollten. Die
"django.core.context_processors.request"
alleinige Verwendung führt dazu, dass die Standardeinstellungen überschrieben werden.quelle
Vielleicht jetzt etwas zu spät. Wenn Sie direkt gesetzt
TEMPLATE_CONTEXT_PROCESSORS
insettings.py
, erhalten Sie alle Standard verlierenTEMPLATE_CONTEXT_PROCESSORS
Wert. Folgendes mache ich in meinemsettings.py
:quelle