Saltar al contenido

Django: redirigir a la página anterior después de iniciar sesión

Solución:

No necesita hacer una vista adicional para esto, la funcionalidad ya está incorporada.

Primero, cada página con un enlace de inicio de sesión necesita conocer la ruta actual, y la forma más fácil es agregar el preprosesor de contexto de solicitud a settings.py (los 4 primeros son predeterminados), luego el objeto de solicitud estará disponible en cada solicitud:

settings.py:

TEMPLATE_CONTEXT_PROCESSORS = (
    "django.core.context_processors.auth",
    "django.core.context_processors.debug",
    "django.core.context_processors.i18n",
    "django.core.context_processors.media",
    "django.core.context_processors.request",
)

Luego agregue en la plantilla que desea el enlace de inicio de sesión:

base.html:

<a href="https://foroayuda.es/{% url django.contrib.auth.views.login %}?next={{request.path}}">Login</a>

Esto agregará un argumento GET a la página de inicio de sesión que apunta a la página actual.

La plantilla de inicio de sesión puede ser tan simple como esto:

registro / login.html:

{% block content %}
<form method="post" action="">
  {{form.as_p}}
<input type="submit" value="Login">
</form>
{% endblock %}

Puede que esta no sea una “práctica recomendada”, pero ya la he utilizado con éxito antes:

return HttpResponseRedirect(request.META.get('HTTP_REFERER',"https://foroayuda.es/"))

Para admitir URL completas con parámetros / valores, necesitaría:

?next={{ request.get_full_path|urlencode }}

en lugar de solo:

?next={{ request.path }}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *