106 votes

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

Je me demandais juste où je pouvais définir l'URL à rediriger après la déconnexion. Je sais que vous pouvez définir l'url de connexion. Je veux rediriger vers ma page d'accueil.

172voto

Yuji 'Tomita' Tomita Points 46106

Les Django modernes (2017+ ?) ont un paramètre appelé LOGOUT_REDIRECT_URL .

Older Djangos / Réponse originale

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

D'après la documentation, vous pouvez simplement fournir l'option next_page à 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/'})

5 votes

Cela ne fonctionne pas si vous avez effectué une importation générique de toutes les urls d'authentification. Il est plus facile d'utiliser la réponse de @YeRuizhi ci-dessous.

0 votes

@RunLoop J'approuve cette autre méthode. Le seul problème est que vous devez vous rappeler de l'utiliser à chaque fois que vous construisez ledit lien. Donc si cela fonctionne dans une construction standard, c'est plus fiable. Si ce n'est pas le cas, alors la prochaine solution la plus simple a du sens.

0 votes

Je n'arrive pas à comprendre comment inverser cette url de vue.

71voto

YeRuizhi Points 53

Un moyen plus facile :

Ajoutez le paramètre 'next' à 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 after-login-redirect, vous pouvez simplement le définir dans settings.py :

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

39 votes

Il est étrange qu'il n'y ait pas simplement une propriété LOGOUT_REDIRECT_URL.

6 votes

21 votes

Nous avons 2017 maintenant et LOGOUT_REDIRECT_URL fonctionne réellement :)

42voto

edelans Points 609

Depuis Django 1.10, vous pouvez définir un fichier LOGOUT_REDIRECT_URL ( voir les documents )

23voto

SACHIN CHAVAN Points 348

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'

14voto

Ciro Santilli Points 3341

Rediriger vers la page actuelle

<a href="{% url 'logout' %}?next={{ request.path | urlencode }}">{% trans "Logout" %}</a>

Testé dans Django 1.9.

Voir aussi : Est-il possible de passer des paramètres de requête via la balise de modèle {% url %} de Django ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X