Django request.user.username funktioniert nicht

8

Hallo Ich habe ein Problem mit dem Django-Vorlagensystem. Wenn ich die Vorlage einchecken möchte, wenn ein Benutzer angemeldet ist:

%Vor%

Ich komme nicht zum Erfolgsteil. Wenn ich in einer Ansicht verwende:

%Vor%

Es zeigt mir richtig den else Teil. Hoffe jemand kann mir helfen. Danke, Phil

    
Philip 14.03.2011, 16:50
quelle

5 Antworten

9

Es gibt ein Beispiel für die Handhabung des Kontextes in Teil 4 des Django-Tutorials. kurz gesagt ...

Der beste Weg, dies zu tun, ist mit Djangos Auth-Kontext-Prozessor. Stellen Sie sicher, dass Sie es noch in Ihren Einstellungen haben. Sie müssen dann RequestContext

verwenden

Dadurch wird Ihr Code wesentlich geändert.

%Vor%     
d0ugal 14.03.2011, 17:01
quelle
6

Denken Sie daran, 'django.core.context_processors.request' zu Ihren TEMPLATE_CONTEXT_PROCESSORS in Ihrer settings.py

hinzuzufügen

Beispiel:

%Vor%

Und fügen Sie RequestContext (Anfrage) hinzu:

%Vor%     
Mickey Cheong 14.03.2011 17:10
quelle
3

In Ihrem Python rufen Sie das Benutzerobjekt ab, das angemeldet ist. Definieren Sie eine Funktion get_current_user.

Ihre Antwort würde also ungefähr so ​​aussehen:

%Vor%

Dann kannst du auf deiner Django-Vorlage einfach wie folgt vorgehen:

%Vor%     
topless 14.03.2011 17:04
quelle
2

Sie müssen sicherstellen, dass Sie "request.user" entweder an den Renderer übergeben. Oder besser noch kontextbasiertes Rendering:

%Vor%

context_instance verwendet den Auth-Middleware-Kontextprozessor, um den 'Benutzer' in Ihrer Ansicht festzulegen.

    
koblas 14.03.2011 16:58
quelle
1

Haben Sie Ihre "user" -Instanz von der Ansicht an die Vorlage übergeben? Sie müssen sicherstellen, dass es sich in demselben Kontext befindet, den Sie an render_to_response () übergeben, oder an die Rendermethode, die Sie zum Rendern des Ansichtskontexts in die Vorlage wählen.

    
Ke Sun 14.03.2011 16:52
quelle

Tags und Links