Django und Login

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
vlynd
User
Beiträge: 2
Registriert: Freitag 23. Oktober 2009, 12:10

Guten Tag,
momentan schreibe ich an einem login-system für eine Webapplikation mit django. Dazu benutze ich auch django auth, allerdings blicke ich noch nicht ganz durch.
Der Login-Vorgang an sich funktioniert einwandfrei, also wenn man sich mit den richtigen Daten einloggt, dann gibt {{ user.username }} auch den Benutzernamen aus.
Allerdings verstehe ich nicht ganz, wie man aus anderen Views darauf zugreif.
Und: reicht es, wenn ich login() benutze oder muss ich noch andere Daten manuell speichern (mal davon abgesehen, dass ich keine Daten brauche, die mir die auth-API bietet)?
Zu guter letzt: Muss ich in jedem Template, dass Bezug darauf nimmt, ob ein Benutzer einloggt ist oder nicht in der entsprechenden Views ein User-Objekt returnen oder kann ich auf die Session auch irgendwie anders zugreifen?
Danke schonmal!
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

vlynd hat geschrieben: Und: reicht es, wenn ich login() benutze oder muss ich noch andere Daten manuell speichern (mal davon abgesehen, dass ich keine Daten brauche, die mir die auth-API bietet)?
ne authenticate und login sollten reichen… (http://docs.djangoproject.com/en/1.1/to ... -a-user-in)
Zu guter letzt: Muss ich in jedem Template, dass Bezug darauf nimmt, ob ein Benutzer einloggt ist oder nicht in der entsprechenden Views ein User-Objekt returnen oder kann ich auf die Session auch irgendwie
Wenn deine Views RequestContext verwenden (solltest du machen) und der auth Context Processor in deinen settings ist (sollte er per default), dann kann jedes Template auf {{ user }} zugreifen… (http://docs.djangoproject.com/en/dev/re ... ssors-auth)
vlynd
User
Beiträge: 2
Registriert: Freitag 23. Oktober 2009, 12:10

Hm, also irgendwie klappt da was nicht.
Ich kann nicht per default auf die {{ user }} Variable zugreifen ... sonst hätte ich hier auch nicht gefragt. ;)
In meiner settings.py hatte ich keinen Punkt TEMPLATE_CONTEXT_PROCESSORS, den habe ich jetzt aber eingefügt. Allerdings musste ich django.contrib.messages.context_processors.messages rauslöschen da das eine Fehlermeldung warf ("No module named...").

Sehe ich das richtig, dass ich mit RequestContext so die Rückgabewerte definieren muss:

Code: Alles auswählen

return render_to_response('login/login.html', {'form': form}, context_instance=RequestContext(request))
?

Das gibt nämlich ein "RequestContext' is not defined" obwohl ich es eigentlich importiere: "from django.template import Context, Template"
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

vlynd hat geschrieben:Ich kann nicht per default auf die {{ user }} Variable zugreifen ... sonst hätte ich hier auch nicht gefragt. ;)
Das ist beim nichtverwenden von RequestContext zu erwarten.
In meiner settings.py hatte ich keinen Punkt TEMPLATE_CONTEXT_PROCESSORS, den habe ich jetzt aber eingefügt. Allerdings musste ich django.contrib.messages.context_processors.messages rauslöschen da das eine Fehlermeldung warf ("No module named...").
Da gab es kürzlich Änderungen, stell sicher, dass du die deiner Version entsprechende Doku liest.
Sehe ich das richtig, dass ich mit RequestContext so die Rückgabewerte definieren muss:

Code: Alles auswählen

return render_to_response('login/login.html', {'form': form}, context_instance=RequestContext(request))
jupp
Das gibt nämlich ein "RequestContext' is not defined" obwohl ich es eigentlich importiere: "from django.template import Context, Template"
Du importierst Context und Template aber nicht RequestContext, lesen ist schwer *scnr*
Antworten