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