Я использую пользователя django.contrib.auth система управления.
Итак, я получил регистрацию / вставку в таблицу / модель пользователей и логин из django.contrib.auth.views.login, чтобы я мог войти в систему.
Однако я не могу использовать 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)
И связал это со второй ссылкой / кнопкой выхода, и я не вышел из системы и запрос .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' ),