Estoy usando el sistema de gestión de usuarios django.contrib.auth.¿Por qué no puedo cerrar sesión en django user auth?
Y compré el registro/insertar en la tabla de usuario/modelo y el inicio de sesión de django.contrib.auth.views.login para que yo pueda conectarse.
Sin embargo, no puedo usar Django .contrib.auth.views.logout cerrar la sesión
que tengo en mi plantilla
<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>
Sin embargo siempre me dan el nombre y el enlace de desconexión porque en realidad nunca cierre de sesión al hacer clic en el botón de cierre de sesión
Aquí es mi sección urls.py para esto:
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'),
)
¿Qué estoy haciendo mal? Nota: También estoy ejecutando django a través de apache2 con mod_wsgi
¡Gracias!
Agregado Info:
No estoy seguro si esto ayuda pero request.session.items impreso en el html y se
[('_auth_user_backend', 'django.contrib.auth.backends.ModelBackend'), ('_auth_user_id', 9L)]
cuando estaba inscrito y también después de que hace clic en el botón de cierre de sesión (django.contrib.auth.views.logout)
Además, he creado:
from django.contrib.auth import logout
def logout_view(request):
request.session.items = []
request.session.modified = True
logout(request)
Y vinculado que a un botón de enlace segunda cierre de sesión/y no cerrar la sesión y los request.session.items se mantuvo igual que el anterior después de hacer clic en el enlace
Creo que estoy cerrando en:
En una de mis funciones de vista que lo hice:
request.session["fav_color"] = "blue"
request.session.modified = True
y luego imprimir en html {{}} request.session.items que me dio
[('_auth_user_backend', 'django.contrib.auth.backends.ModelBackend'), ('_auth_user_id', 9L)]
y sin ('fav_color', 'azul') tupla ¿He hecho algo mal otra vez, o es una prueba de que mi lista request.session no está siendo modificada?
K lo descubrió:
url(r'^my_account/$', 'logout', { 'template_name': 'registration/my_account.html', 'SSL': settings.ENABLE_SSL }, 'logout'),
debería ser
url(r'^logout/$', 'logout', { 'template_name': 'registration/my_account.html', 'SSL': settings.ENABLE_SSL }, 'logout'),
Esto me parece correcto. Es posible que desee instalar la barra de herramientas de depuración de django y ver qué dice el objeto de usuario. Esto podría ayudarlo a determinar si la variable de usuario es correcta, etc. – Hutch
agregó algo de información adicional, ¿tal vez esto podría ayudar a determinar cuál es el problema? – Derek