2013-06-23 38 views
0

所以我想考慮登錄用戶說有2個選項卡打開,並在一個選項卡中但在另一個選項卡中登出我的網站的情況標籤,因爲他們仍然'登錄',並且他們嘗試點擊提交POST數據的按鈕,我的視圖中的函數應該檢測到用戶未通過身份驗證,並且應該將其重定向到登錄頁面。但是,我似乎無法得到這個工作。我做了很多測試,我知道我的狀況正確地得到驗證,但是重定向並沒有發生。以下是我認爲的表單和代碼的代碼。Django - 在POST後重定向(但在註銷後)

<form method="POST" action=""> 
{% csrf_token %} 
# an input button 
</form> 


if not request.user.is_authenticated(): 
    return HttpResponseRedirect(reverse('django.contrib.auth.views.login')) 

#otherwise I check if it was request.POST etc and handle a normal request 

我試着硬編碼的URL,使用我的設置文件中指定的登錄URL等,但似乎沒有任何它似乎做任何事情。我想這都是因爲空行動「」的一部分,但我不認爲這是原因。

+0

你可能會失去方面具有因的'HttpResponseRedirect'使用'redirect_to'代替 – karthikr

回答

2

我看來,像爲login_required裝飾完美的任務:https://docs.djangoproject.com/en/1.5/topics/auth/default/#the-login-required-decorator

+0

+1的片段測試'user.request.is_authenticated()'看起來是正確的,並應該工作,但使用'login_required'裝飾器會更簡單。 – Alasdair

+0

我已經嘗試了@login_required(並重新嘗試一次,現在只是爲了確保),並在我的設置中指定了LOGIN_URL,並且在我的urls.py中放入了django.contrib.auth.views.login的url,但它仍然只是不幸的是沒有做任何事情。仍然沒有重定向,它只是刷新頁面(現在正在註銷) – Stylex

+0

爲什麼你不試試發佈你的整個視圖/網址/模板等?所以我們可以看到整個畫面。 – Ben