2014-04-27 87 views
2

在django中,如何防止某些頁面顯示給登錄用戶。例如登錄頁面,註冊頁面。那是我想阻止登錄用戶訪問登錄和註冊頁面。只允許訪問在django中未登錄的用戶

這樣做的一種方法是編寫我自己的登錄視圖,並在該視圖中檢查用戶是否已經登錄,如果他是,重定向到其他頁面。

有沒有更好的方法來實現這一目標?像一些裝飾者?

回答

2

看看user_passes_test裝飾器。

你會做這樣的事情:

from django.contrib.auth.decorators import user_passes_test 
@user_passes_test(lambda u: not u.is_authenticated()) 
def my_view(request): 
    ... 

user_passes_test接收功能。那個函數接收用戶對象。該函數必須返回一個布爾值來確定是否應該執行該視圖。

如果您不使用用戶對象來驗證用戶,那麼您將不得不編寫自己的裝飾器。

+0

感謝您的建議。我沒有接受這個答案的原因是因爲我還沒有嘗試過。我正在執行新的事情。一旦我完成了它,我會回到這個並嘗試一下。 – nik

+0

等待你嘗試一下。 –

相關問題