Ich versuche, eine einfache Website mit Anmeldefunktionen zu erstellen, die der hier auf SO sehr ähnlich sind. Der Benutzer sollte in der Lage sein, die Website als anonymer Benutzer zu durchsuchen, und auf jeder Seite wird ein Anmeldelink angezeigt. Wenn Sie auf den Anmeldelink klicken, wird der Benutzer zum Anmeldeformular weitergeleitet. Nach einer erfolgreichen Anmeldung sollte der Benutzer zu der Seite zurückkehren, von der aus er zuerst auf den Anmeldelink geklickt hat. Ich vermute, dass ich die URL der aktuellen Seite irgendwie an die Ansicht übergeben muss, die das Anmeldeformular verarbeitet, aber ich kann es nicht wirklich zum Laufen bringen.
EDIT: Ich habe es herausgefunden. Ich habe eine Verknüpfung zum Anmeldeformular hergestellt, indem ich die aktuelle Seite als GET-Parameter übergeben und dann 'next' verwendet habe, um zu dieser Seite umzuleiten. Vielen Dank!
EDIT 2: Meine Erklärung schien nicht klar zu sein. Wie hier angefordert, ist mein Code: Nehmen wir an, wir befinden uns auf einer Seite foo.html und sind nicht angemeldet. Jetzt möchten wir einen Link auf foo.html haben, der verlinkt zu login.html. Dort können wir uns anmelden und werden dann zurück zu foo.html umgeleitet. Der Link auf foo.html sieht folgendermaßen aus:
<a href='/login/?next={{ request.path }}'>Login</a>
Jetzt habe ich eine benutzerdefinierte Anmeldeansicht geschrieben, die ungefähr so aussieht:
def login_view(request):
redirect_to = request.REQUEST.get('next', '')
if request.method=='POST':
#create login form...
if valid login credentials have been entered:
return HttpResponseRedirect(redirect_to)
#...
return render_to_response('login.html', locals())
Und die wichtige Zeile in login.html:
<form method="post" action="./?next={{ redirect_to }}">
Also ja, das ist so ziemlich alles, hoffe das macht es klar.