Comment configurer où rediriger après une déconnexion dans Django?

88

Je me demande simplement où je peux définir l'URL vers laquelle rediriger après la déconnexion. Je sais que vous pouvez définir l'URL de connexion. Je souhaite rediriger vers ma page d'accueil.

DJ.MaSs
la source

Réponses:

156

Modern Django (2017+?) A un paramètre appelé LOGOUT_REDIRECT_URL.

Djangos plus anciens / Réponse originale

Vous n'avez pas besoin d'écraser ou d'encapsuler quoi que ce soit.

Selon la documentation, vous pouvez simplement fournir l' next_pageargument à la vue de déconnexion. 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
la source
5
Cela ne fonctionne pas si vous avez effectué une importation générique de toutes les URL d'authentification. Plus facile à utiliser la réponse de @ YeRuizhi ci
RunLoop
@RunLoop J'approuve cette autre méthode. Le seul problème est que vous devez vous rappeler de l'utiliser chaque fois que vous créez ledit lien. Donc, si cela fonctionne dans une version standard, c'est plus fiable. Sinon, la prochaine solution la plus simple a du sens.
Yuji 'Tomita' Tomita
Je ne peux pas comprendre comment inverser cette URL de la vue.
meteor
C'est une solution formidable. Je le repousse directement à la page de connexion. Existe-t-il également un moyen d'ajouter un message système via cette ligne? afin de créer un popup? "Vous vous êtes déconnecté avec succès"
arcee123
La barre oblique au début de l'URL de 'page suivante': '/ avec succès_logged_out /' est vitale, sans elle, Django tente de concaténer l'URL de "déconnexion" avec l'URL "avec succès_logged_out", cela crée une nouvelle URL "illégale". Rend la vie un peu difficile si vous souhaitez présenter aux utilisateurs votre page de connexion après leur déconnexion.
Rickka
60

Un moyen plus simple:

Ajoutez le paramètre «suivant» à votre URL de demande de déconnexion. Par exemple:

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

Ensuite, la vue de déconnexion fera l'affaire pour vous.

Pour la redirection après connexion, vous pouvez simplement le définir dans settings.py:

LOGIN_REDIRECT_URL = '/path_to_the_page'
LOGIN_URL = '/path_to_the_page'
YeRuizhi
la source
35
Bizarre qu'il n'y ait pas qu'une propriété LOGOUT_REDIRECT_URL.
Rob Grant
16
Nous avons 2017 maintenant et LOGOUT_REDIRECT_URL fonctionne réellement :)
m.antkowicz
Bonne réponse. Coller ça dans mon base.htmlet oublier ça. : D (J'utilise Django vintage sur Debian Jessie: S donc les nouveaux paramètres ne sont pas disponibles.)
underscore_d
13

Vous pouvez rediriger l'utilisateur n'importe où en utilisant LOGOUT_REDIRECT_URL dans votre fichier setting.py

LOGOUT_REDIRECT_URL = 'url name to redirect'
SACHIN CHAVAN
la source
4

Dans votre vue de déconnexion, après avoir déconnecté l'utilisateur pour de bon, renvoyez HttpResponseRedirect (url). S'il vous plaît voir ici pour plus de détails .

Ke Sun
la source
3

À partir de la documentation, vous pouvez écrire votre propre vue de déconnexion (qui peut être simplement un simple wrapper) en remplaçant la page «suivante».

Don
la source
3

Vous pouvez même utiliser des URL nommées pour votre prochain paramètre:

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

Si vous souhaitez définir l'URL de redirection au niveau du client, vous pouvez le faire dans urls.py:

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

Et puis dans le modèle:

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

Où le next, vous pointez vers la bonne URL.

Menda
la source
1

Si vous avez défini vos propres URL (et non importé des URL d'authentification génériques) et que vous utilisez les vues d'authentification standard de django, vous pouvez simplement les ajouter (template_name = 'example.html') dans le chemin.

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

Dcode22
la source
0

ajoutez ceci dans votre fichier de project setting.py LOGOUT_REDIRECT_URL = '/'

vous pouvez écrire votre URL entre '' J'utilise ma page d'index pour la redirection par défaut de déconnexion

Emad Mohammadpoor
la source