Почему я не могу выйти из системы с помощью авторизации пользователя django?

Я использую пользователя 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' ),
8
задан Derek 14 June 2011 в 22:32
поделиться