Я использую систему управления пользователями django.contrib.auth.
Итак, я получил регистрацию / вставку в таблицу / модель пользователя и логин от django.contrib.auth.views.login upпоэтому я могу войти в систему.
Однако я не могу использовать django.contrib.auth.views.logout для выхода из системы
У меня есть в моем шаблоне
<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>
Однако я всегда получаю имя и ссылку выхода из системы, потому что я никогда не выхожу из системы, когда нажимаю кнопку выхода из системы
Вот мой раздел urls.py для этого:
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' ),
)
Что яделать неправильно?Примечание: я также запускаю django через apache2 с mod_wsgi
Спасибо!
Добавлена информация:
Не уверен, поможет ли это, но я напечатал request.session.items в htmlи получил
[('_auth_user_backend', 'django.contrib.auth.backends.ModelBackend'), ('_auth_user_id', 9L)]
, когда я вошел в систему, а также после того, как я нажал кнопку выхода из системы (django.contrib.auth.views.logout)
Кроме того, я создал:
from django.contrib.auth import logout
def logout_view(request):
request.session.items = []
request.session.modified = True
logout(request)
И связал это со второй ссылкой / кнопкой выхода из системы, и я не вышел из системы, а request.session.items остался прежним после нажатия на ссылку
Я думаю, что закрываюсь в:
В одной из моих функций просмотра я сделал:
request.session["fav_color"] = "blue"
request.session.modified = True
, а затем напечатал в html {{request.session.items}}, который дал мне
[('_auth_user_backend', 'django.contrib.auth.backends.ModelBackend'), ('_auth_user_id', 9L)]
и нет ('fav_color', 'blue') кортеж.Я снова что-то сделал не так или это доказательство того, что мой список request.session не изменяется?
K понял:
url(r'^my_account/$', 'logout', { 'template_name': 'registration/my_account.html', 'SSL': settings.ENABLE_SSL }, 'logout' ),
должно быть
url(r'^logout/$', 'logout', { 'template_name': 'registration/my_account.html', 'SSL': settings.ENABLE_SSL }, 'logout' ),