假設我有看法嵌套的裝飾,提高404
def foo(request)
我還使用自定義的用戶模型如下:
class MyUser(AbstractUser):
field = models.BooleanField()
我想2個Django的裝飾相結合:login_required和user_passed_test ,所以匿名用戶應該被重定向到一個登錄頁面,並且不允許用戶看到該視圖(user.field == False)應該看到一個正確的消息(比如'你不允許看到這個' )。
所以,我想:
my_decor = user_passes_test(lambda user: user.field == True,
login_url='/bar')
def custom_decor(view_func):
decorated_view_func = login_required(my_decor(view_func), login_url='/login')
return decorated_view_func
而且我也必須定義視圖:
def bar(request):
return HttpResponse('you are not allowed to see this context.')
在我的網址硬編碼。
問題是:我可以在不創建附加視圖並將其添加到URL的情況下執行此操作嗎?有沒有辦法讓'user_passed_test'裝飾器引發404錯誤,而不是重定向到登錄視圖?
可能有一個非常簡單的解決方案,當然我只是想念它。
你說的是兩件事:1,結合2個裝飾和2。修改自己的行爲來提高404而不是重定向。關於組合,我認爲你絕對做對了。 – glglgl