¿Cómo configurar dónde redireccionar después de cerrar sesión en Django?


88

Me pregunto dónde puedo configurar la URL a la que redireccionar después de cerrar la sesión. Sé que puede configurar la URL de inicio de sesión. Quiero redirigir a mi página de inicio.

Respuestas:


156

Modern Django (2017+?) Tiene una configuración llamada LOGOUT_REDIRECT_URL.

Djangos antiguo / Respuesta original

No es necesario sobrescribir ni envolver nada.

De acuerdo con los documentos, simplemente puede proporcionar el next_pageargumento a la vista de cierre de sesión. https://docs.djangoproject.com/en/dev/topics/auth/default/#django.contrib.auth.views.logout

(r'^logout/$', 'django.contrib.auth.views.logout',
                          {'next_page': '/successfully_logged_out/'})

5
Esto no funciona si ha realizado una importación genérica de todas las URL de autenticación. Más fácil de usar la respuesta de @ YeRuizhi a continuación
RunLoop

@RunLoop Apruebo este otro método. El único problema es que debe recordar usarlo cada vez que cree dicho enlace. Entonces, si esto funciona en una compilación estándar, es más confiable. De lo contrario, la siguiente solución más sencilla tiene sentido.
Yuji 'Tomita' Tomita

No puedo entender cómo revertir esta URL de la vista.
meteoro

Esta es una solución asombrosa. Lo estoy empujando de regreso a la página de inicio de sesión. ¿Hay alguna forma de agregar un mensaje del sistema a través de esta línea también? para crear una ventana emergente? "Has
cerrado la

La barra inclinada al comienzo de la URL de la 'página siguiente': '/ success_logged_out /' es vital, sin ella, Django intenta concatenar la URL de "cierre de sesión" con la URL "correctamente_logged_out", esto crea una nueva URL "ilegal". Hace la vida un poco difícil si desea presentar a los usuarios su página de inicio de sesión después de cerrar la sesión.
Rickka

60

Una forma más sencilla:

Agregue el parámetro 'siguiente' a su URL de solicitud de cierre de sesión. Por ejemplo:

<a href="{% url 'auth_logout' %}?next=/path_to_the_page"> Logout</a>

Entonces la vista de cierre de sesión hará el truco por usted.

Para el redireccionamiento posterior al inicio de sesión, simplemente puede configurarlo en settings.py:

LOGIN_REDIRECT_URL = '/path_to_the_page'
LOGIN_URL = '/path_to_the_page'

35
Es extraño que no haya solo una propiedad LOGOUT_REDIRECT_URL.
Rob Grant


16
Tenemos 2017 ahora y LOGOUT_REDIRECT_URL está realmente funcionando :)
m.antkowicz

Buena respuesta. Pegar esto en mi base.htmly olvidarlo. : D (Estoy usando Django antiguo en Debian Jessie: S, por lo que la nueva configuración no está disponible.)
underscore_d


13

Puede redirigir al usuario a cualquier lugar utilizando LOGOUT_REDIRECT_URL en su archivo setting.py

LOGOUT_REDIRECT_URL = 'url name to redirect'



3

Desde los documentos , puede escribir su propia vista de cierre de sesión (que puede ser simplemente un contenedor) anulando la página "siguiente".


3

Incluso puede usar URL con nombre para su próximo parámetro:

<a href="{% url 'auth_logout' %}?next={% url 'homepage' %}"> Logout</a>

3

Si desea establecer la URL de redirección a nivel de cliente, puede hacerlo en urls.py:

(r'^management/logout/$', 'django.contrib.auth.views.logout'),

Y luego en la plantilla:

<a href="{% url 'django.contrib.auth.views.logout' %}?next=/">
    Log out
</a>

Donde el next, apunta a la URL correcta.


1

Si ha definido sus propias URL (y no las URL de autenticación genéricas importadas) y está utilizando las vistas de autenticación estándar de django, simplemente puede agregarlas (template_name = 'example.html') en la ruta.

path('logout/',auth_views.LogoutView.as_view(template_name='homepage.html'),name="logout")


0

agregue esto en el archivo setting.py del proyecto LOGOUT_REDIRECT_URL = '/'

puede escribir su URL entre '' Uso mi página de índice para la redirección predeterminada de cierre de sesión

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.