0
我只想要某些視圖通過處理器。例如,對於我的大約一半的視圖,我想運行一個自定義的身份驗證方法。如果用戶未通過身份驗證,則會將其重定向到新頁面。在Django中做這樣的事情有什麼好方法?在Django中有沒有一種方法可以讓上下文處理器只處理某些視圖?
我只想要某些視圖通過處理器。例如,對於我的大約一半的視圖,我想運行一個自定義的身份驗證方法。如果用戶未通過身份驗證,則會將其重定向到新頁面。在Django中做這樣的事情有什麼好方法?在Django中有沒有一種方法可以讓上下文處理器只處理某些視圖?
上下文處理器不是你所需要的。上下文處理器(如其名稱所暗示的)在呈現模板時會注入額外的上下文。
你想要的是在視圖運行之前重定向(因此在任何模板呈現之前)。
這可以通過middleware實現,但中間件更適用於全部您的意見。
對於你的情況,你應該寫a decorator,並用它來裝飾這些視圖。具體而言,您可能想要使用user_passes_test
:
from django.contrib.auth.decorators import user_passes_test
def my_auth_check(user):
# Do something
if all_good(user):
return True
return False
@user_passes_test(my_auth_check)
def my_view(request):
# stuff
@user_passes_test(my_auth_check)
def my_other_view(request):
# stuff
到註冊頁面?或只是一個正常的頁面? – cdvv7788 2015-02-06 20:40:07