Estoy tratando de construir un sitio web simple con una funcionalidad de inicio de sesión muy similar a la de SO en SO. El usuario debe poder navegar por el sitio como usuario anónimo y habrá un enlace de inicio de sesión en cada página. Al hacer clic en el enlace de inicio de sesión, el usuario será llevado al formulario de inicio de sesión. Después de un inicio de sesión exitoso, el usuario debe volver a la página desde donde hizo clic en el enlace de inicio de sesión en primer lugar. Supongo que tengo que pasar de alguna manera la URL de la página actual a la vista que maneja el formulario de inicio de sesión, pero realmente no puedo hacer que funcione.
EDITAR: lo descubrí. Me vinculé al formulario de inicio de sesión pasando la página actual como un parámetro GET y luego usé 'siguiente' para redirigir a esa página. ¡Gracias!
EDITAR 2: Mi explicación no parecía ser clara, por lo que, según lo solicitado, aquí está mi código: Digamos que estamos en una página foo.html y no hemos iniciado sesión. Ahora nos gustaría tener un enlace en foo.html que vincule para iniciar sesión.html. Allí podemos iniciar sesión y luego se nos redirige a foo.html. El enlace en foo.html se ve así:
<a href='/login/?next={{ request.path }}'>Login</a>
Ahora escribí una vista de inicio de sesión personalizada que se parece a esto:
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())
Y la línea importante en login.html:
<form method="post" action="./?next={{ redirect_to }}">
Así que sí, eso es todo, espero que quede claro.