1
我在基於django-rest-framework
的應用程序中執行(或多或少)自定義身份驗證,我只需要調用另一個微服務來詢問它是否有效和什麼用戶名/用戶名與它相關聯。 (我沒有用戶的本地表)。Django-rest-framework:return來自.dispatch的響應
找到沒有開箱即用的解決方案後,我重寫了dispatch
方法(我使用的是基於APIView
的視圖),在此我向遠程服務發出請求,並且如果響應不是200 ,我想返回一個403錯誤。
這裏是我的代碼:
def dispatch(self, request, *args, **kwargs):
try:
user_info = user_from_token_in_request(request)
return super().dispatch(*args, **kwargs)
except:
return Response(
"No Auth Token provided or bad Auth Token"
status.HTTP_403_FORBIDDEN,
)
然而,當我通過一個無效的令牌,我得到這個錯誤:AssertionError: .accepted_renderer not set on Response
,因爲當處理dispatch
方法的響應上下文未初始化。
有沒有一種更正確的方法來做到這一點?
在這種情況下,客戶得到的響應是500 – Ibolit
@Ibolit有你在設置中定義的REST框架異常處理程序。 – hspandher
我也嘗試過實現.handle_exception,但它不會在調度中調用異常。 – Ibolit