我正在使用django.contrib.auth用戶管理系統。爲什麼我無法註銷django用戶身份驗證?
所以我就註冊/插入到用戶表/模型,並將其從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'),
)
我在做什麼錯? 注:我也是通過的Apache2運行Django與mod_wsgi的
謝謝!
新增信息:
不知道這是否幫助,但我在HTML印刷request.session.items並得到
[('_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', '藍')元組。我又做錯了什麼,還是證明我的request.session列表沒有被修改?
ķ想通了:
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'),
這看起來對我來說是正確的。您可能想要安裝django調試工具欄,並查看它說的用戶對象是什麼。這可以幫助您確定用戶變量是否正確等。 – Hutch 2011-06-14 20:05:22
添加了一些額外的信息,也許這可能有助於確定問題是什麼? – Derek 2011-06-14 20:24:40