web-dev-qa-db-fra.com

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

Je me demande simplement où je peux configurer l'URL pour 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.

80
DJ.MaSs

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

Djangos plus vieux/réponse originale

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

Selon la documentation, vous pouvez simplement fournir le next_page argument dans 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/'})
144

Un moyen plus simple:

Ajoutez le paramètre 'next' à l'URL de votre 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'
50
YeRuizhi

Depuis Django 1.10, vous pouvez définir un LOGOUT_REDIRECT_URL _ ( voir la documentation )

31
edelans

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 transmettre des paramètres de requête via la balise de template {Djol%? De Django?

Vous pouvez rediriger des utilisateurs n’importe où en utilisant LOGOUT_REDIRECT_URL dans votre fichier setting.py.

LOGOUT_REDIRECT_URL = 'url name to redirect'
6
SACHIN CHAVAN

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 .

3
Ke Sun

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

2
Dona

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

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

Et puis dans le template:

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

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

2
Menda

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

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