ubh*_*sat 7 python django django-rest-framework
我创建了一个引用http://django-rest-framework.org/api-guide/exceptions.html的自定义异常.
请知道我有自己的身份验证后端.因此我没有使用rest_framework的身份验证模块.
对于身份验证错误,我想将"WWW-Authenticate:Token"标头添加到从异常发送的响应中.
任何想法都会非常有帮助.
更新:
谢谢@Pathétique,这就是我最终要做的事情.
- 有一个名为BaseView的基础视图类.
- 在我的案例'WWW-Authenticate'中覆盖handle_exception方法来设置适当的标题.
这是代码:
class BaseView(APIView):
def handle_exception(self, exc):
if isinstance(exc, MYEXCEPTION):
self.headers['WWW-Authenticate'] = "Token"
return Response({'detail': exc.detail,
status=exc.status_code, exception=True)
Run Code Online (Sandbox Code Playgroud)
你的意见?
尝试覆盖finalize_response您的休息框架视图:
def finalize_response(self, request, *args, **kwargs):
response = super(SomeAPIView, self).finalize_response(request, *args, **kwargs)
response['WWW-Authenticate'] = 'Token'
return response
Run Code Online (Sandbox Code Playgroud)
编辑:
看到你的更新后,我认为你的覆盖handle_exception应该工作,我只会添加一个else语句来调用父方法来覆盖其他异常.我在覆盖调度时注意到的一件事,这可能不是一个问题,是为self.headers设置一个新的键/值导致服务器错误,我没有花时间追踪.无论如何,你似乎走在了正确的轨道上.
| 归档时间: |
|
| 查看次数: |
2142 次 |
| 最近记录: |