J'ai fourni une fonctionnalité de connexion simple. Pour vous déconnecter, j'ai essayé d'utiliser celui intégré. Ceci est mon urls.py:
(r'', include('Django.contrib.auth.urls')),
Et voici mon fichier de modèle:
{% if user.is_authenticated %}
logged in as {{ user }}
(<a href="{% url "logout" %}">logout</a>)
{% else %}
J'ai également activé le site d'administration par défaut de Django. Lorsque je clique sur logout
, il me montre la vue de déconnexion de l’administration. Comment puis-je transmettre l'attribut de déconnexion de la page suivante pour indiquer à Django quelle vue restituer?
Si vous voyez la page de déconnexion du site d'administration Django au lieu de votre propre page de déconnexion (votre_application/modèles/registration/log_out.html), vérifiez le paramètre INSTALLED_APPS de votre projet et assurez-vous que Django.contrib.admin vient après. 'ton application'. Les deux modèles sont situés dans le même chemin relatif et le chargeur de modèles Django utilisera le premier qu'il trouvera.
Testé sur Django 1.6:
Ce que je fais est d'ajouter ceci dans mon urls.py
:
(r'^management/logout/$', 'Django.contrib.auth.views.logout'),
Et puis utilisé:
<a href="{% url "Django.contrib.auth.views.logout" %}?next=/">Log out</a>
Pour l'argument next
, vous pointez ici la bonne URL.
Testé sur Django 2.1
Ajouter à urlpatterns
dans urls.py
:
from Django.contrib.auth import views as auth_views
urlpatterns = [
path('logout/', auth_views.LogoutView.as_view(), name='logout'),
]
Et puis utilisez-le dans le template:
<a href="{% url "logout" %}?next=/">logout</a>
Plus d'informations peuvent être trouvées ici .
Selon la documentation, vous pouvez fournir le paramètre next_page à la vue de déconnexion. https://docs.djangoproject.com/en/dev/topics/auth/#Django.contrib.auth.views.logout
(r'^logout/$', 'Django.contrib.auth.views.logout',
{'next_page': '/logged_out/'})
Tout cela est assez bien expliqué dans le manuel. Y a-t-il quelque chose de spécifique que vous ne comprenez pas?
https://docs.djangoproject.com/en/dev/topics/auth/default/#how-to-log-a-user-out
from Django.contrib.auth import logout
def logout_view(request):
logout(request)
# Redirect to a success page.
Alternativement si vous ne voulez pas créer votre propre vue
https://docs.djangoproject.com/en/dev/topics/auth/default/#Django.contrib.auth.views.logout
{% url 'logout' next='/some/url/' %}
je connaissais le même problème après Django, par exemple ... j'ai trouvé cette URL qui fonctionnait pour moi
url(r'^logout/$', 'Django.contrib.auth.views.logout', { 'template_name': 'account/logout.html',}, name='logout' ),
La solution la plus simple est:
Assurez-vous que votre application arrive avant Django.contrib.admin
sous les applications installées dans settings.py
.
Assurez-vous que votre modèle s'appelle logged_out.html
.
Il suffit de remplacer les chargeurs ici, et les modèles d'authentification se trouvent dans "your_progect_apps/templates/registration":
TEMPLATES = [
{
'BACKEND': 'Django.template.backends.Django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'OPTIONS': {
'context_processors': [
'Django.template.context_processors.debug',
'Django.template.context_processors.request',
'Django.contrib.auth.context_processors.auth',
'Django.contrib.messages.context_processors.messages',
],
'loaders': [
'Django.template.loaders.filesystem.Loader',
'Django.template.loaders.app_directories.Loader',
],
},
},
]
Django v2.1