Pourquoi ne puis-je pas de déconnexion sur django d'authentification de l'utilisateur?
Je suis en utilisant le django.contrib.auth système de gestion des utilisateurs.
J'ai donc eu l'enregistrement/insertion dans la table user/modèle et le nom de django.contrib.auth.les vues.connexion pour que je puisse connecter.
Cependant, je ne peux pas utiliser django.contrib.auth.les vues.déconnexion pour vous déconnecter
J'ai dans mon template
<h1>My Account</h1>
<strong> Welcome, {{ name|capfirst }}!</strong>
<br /><br />
<ul>
<li>
{% if user.is_authenticated %}
<a href="{% url django.contrib.auth.views.logout %}">Logout</a>
{% else %}
<a href="{% url register %}">Sign Up</a>
</li>
<li>
<a href="{% url django.contrib.auth.views.login %}">Login</a>
{% endif %}
</li>
</ul>
Cependant j'ai toujours le nom et le lien de déconnexion car je n'ai jamais fait de déconnexion lorsque je clique sur le bouton de déconnexion
Voici mon urls.py section:
urlpatterns += patterns('django.contrib.auth.views',
url(r'^login/$', 'login', { 'template_name': 'registration/login.html', 'SSL': settings.ENABLE_SSL }, 'login' ),
url(r'^my_account/$', 'logout', { 'template_name': 'registration/my_account.html', 'SSL': settings.ENABLE_SSL }, 'logout' ),
)
Ce que je fais mal?
Note: je suis également en cours d'exécution django via apache2 avec mod_wsgi
Merci!
Ajout D'Infos:
Ne sais pas si cela aide, mais j'ai imprimé la demande.session.articles dans le code html et a obtenu
[('_auth_user_backend', 'django.contrib.auth.backends.ModelBackend'), ('_auth_user_id', 9L)]
quand j'étais connecté, et après j'ai cliqué sur le bouton de déconnexion (django.contrib.auth.les vues.déconnexion)
Aussi, j'ai créé:
from django.contrib.auth import logout
def logout_view(request):
request.session.items = []
request.session.modified = True
logout(request)
Et lié à un deuxième lien de déconnexion/bouton et je n'ai pas de déconnexion et de la demande.session.les éléments restés les mêmes que ci-dessus en cliquant sur le lien
Je pense que je suis de clôture:
Dans une de mes fonctions d'affichage que j'ai fait:
request.session["fav_color"] = "blue"
request.session.modified = True
et de l'imprimer en html {{ demande.session.articles }}, qui m'a donné
[('_auth_user_backend', 'django.contrib.auth.backends.ModelBackend'), ('_auth_user_id', 9L)]
et non ('fav_color', 'bleu') n-uplet. Ai-je fais quelque chose de nouveau mal, ou est-ce la preuve que ma demande.liste de session n'est pas modifié?
K compris:
url(r'^my_account/$', 'logout', { 'template_name': 'registration/my_account.html', 'SSL': settings.ENABLE_SSL }, 'logout' ),
devrait être
url(r'^logout/$', 'logout', { 'template_name': 'registration/my_account.html', 'SSL': settings.ENABLE_SSL }, 'logout' ),
ajout de quelques infos supplémentaires, cela pourrait peut-être aider à déterminer quel est le problème?
OriginalL'auteur Derek | 2011-06-14
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin d'avoir une déconnexion de la vue avec l'url pointant vers ce point de vue. Rien n'a à être sur le modèle, il suffit d'avoir de django.contrib.auth.logout() déconnexion de la vue. Sur le nouveau django serveurs vous pouvez eaisly de déconnexion, mais vous devez le faire dans une vue, pas un modèle. Voici un extrait de l'django livre:
Cet exemple montre comment vous pouvez utiliser à la fois authenticate() et de connexion() dans une fonction de visualisation:
Pour déconnecter un utilisateur, utilisez django.contrib.auth.logout() au sein de votre point de vue. Il prend un objet HttpRequest et n'a pas de valeur de retour:
Reportez-vous à la Django livre en ce qui concerne tout http://www.djangobook.com/en/2.0/chapter14/, j'ai tout appris de ce livre.
OriginalL'auteur TheChes44
J'ai rencontré ce problème, et c'est un stupide maux de tête. C'est ainsi que je la force de la déconnexion. - Je conserver
logout(request)
pour (espérons-le) de déclencher l'utilisateur connecté de signaux.:OriginalL'auteur Justin M
Vous n'avez pas à écrire une vue pour cela, il vous suffit de faire:
(r'^accounts/logout/$', 'django.contrib.auth.views.logout',{'next_page': '/accounts/login'})
Plus d'infos: https://docs.djangoproject.com/en/dev/topics/auth/default/#django.contrib.auth.views.logout
OriginalL'auteur
Je pense que urls.py pouvait être comme ça(connexion et déconnexion de points de vue ne pas accepter le paramètre SSL):
Et dans le modèle:
OriginalL'auteur mrbox