Dies sollte ein sehr einfacher sein. Ich bin mir ziemlich sicher, dass ich diesen Kontext in meinen Vorlagen zu Verknüpfungszwecken erfolgreich genutzt habe. Ich war der Überzeugung, dass dies irgendwie in die RequestContext-Instanz eingebaut wurde.
Der SITE_ID-Eintrag in meiner Einstellungsdatei ist korrekt. Ich habe eine RequestContext-Instanz für alle meine Ansichten eingefügt und die App contrib.auth hinzugefügt, die in diesem Fall relevant sein kann.
Ist der {{site}} -Kontext irgendwie eingebaut oder sollte ich das Sites-Objekt für die Instanz abfragen?
danke allen, Brendan
Django ist bestrebt, explizit zu sein, daher ist es unwahrscheinlich, dass es irgendeinen Kontext für sich selbst festlegen würde. Es muss einen Kontextprozessor geben, der {{site}}
in settings.CONTEXT_PROCESSORS
setzt. Ich habe django.core.context_processors
und django.contrib.sites
überprüft und es gibt keinen solchen Prozessor, der site
setzt. Sie hatten wahrscheinlich einen Kontextprozessor von Drittanbietern, der das macht.
Es ist sehr einfach, den Kontextprozessor zu schreiben:
%Vor%Es tut nicht weh, einen benutzerdefinierten Kontextprozessor zu erstellen
%Vor%Beachten Sie, dass get_current () SITE_ID verwendet. Dies ist eine globale Einstellung im Projekt (definiert in settings.py). Wenn Sie Multi-Sites unterstützen möchten, müssen Sie die Variable SITE_ID verwenden, um den Wert abhängig von der aktuellen Site, auf die zugegriffen wird, zu ändern.
Hier ist ein nettes Snippet, das es zum Laufen bringt.
Tags und Links django django-templates django-context