¿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.

DJ.MaSs
fuente

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/'})
Yuji 'Tomita' Tomita
fuente
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'
YeRuizhi
fuente
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'
SACHIN CHAVAN
fuente
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".

Don
fuente
3

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

<a href="{% url 'auth_logout' %}?next={% url 'homepage' %}"> Logout</a>
blueFast
fuente
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.

Menda
fuente
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")

Dcode22
fuente
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

Emad Mohammadpoor
fuente