J'essaie de créer un site Web simple avec une fonctionnalité de connexion très similaire à celle ici sur SO. L'utilisateur doit pouvoir naviguer sur le site en tant qu'utilisateur anonyme et il y aura un lien de connexion sur chaque page. En cliquant sur le lien de connexion, l'utilisateur sera dirigé vers le formulaire de connexion. Après une connexion réussie, l'utilisateur doit être ramené à la page à partir de laquelle il a cliqué sur le lien de connexion en premier lieu. Je suppose que je dois en quelque sorte transmettre l'URL de la page actuelle à la vue qui gère le formulaire de connexion, mais je ne peux pas vraiment le faire fonctionner.
EDIT: je l'ai compris. J'ai lié au formulaire de connexion en passant la page actuelle en tant que paramètre GET, puis j'ai utilisé «suivant» pour rediriger vers cette page. Merci!
EDIT 2: Mon explication ne semblait pas claire donc comme demandé voici mon code: Disons que nous sommes sur une page foo.html et que nous ne sommes pas connectés. Maintenant, nous aimerions avoir un lien sur foo.html qui lie à login.html. Là, nous pouvons nous connecter et nous sommes ensuite redirigés vers foo.html. Le lien sur foo.html ressemble à ceci:
<a href='/login/?next={{ request.path }}'>Login</a>
Maintenant, j'ai écrit une vue de connexion personnalisée qui ressemble un peu à ceci:
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())
Et la ligne importante dans login.html:
<form method="post" action="./?next={{ redirect_to }}">
Alors oui, c'est à peu près tout, espérons que cela soit clair.