我正在尝试使用 Django 制作一个 api,并且我正在验证请求 header 是否包含一个 api key 并据此引发异常,如下所示:
def _check_driver_authorization(request):
if request.headers.get('authorization') is not None:
token = request.headers['authorization']
user = Driver.objects.filter(access_token=token)
if user.exists():
return
raise Http401
else:
raise Http403
我没有找到任何人试图这样做,我在这里搜索了很多线程,他们都试图返回响应(渲染),我的情况是我试图中断请求并引发异常。
我的灵感来自 get_object_or_404。
编辑/更新:
有关更多详细信息和说明,内置的 Http404 异常会引发以下问题:
Http404
但我试图做出的异常(exception)(与 Http404 完全相同)引发了这个:
Http403
最佳答案
有handler和异常(exception)响应 converter这允许你做一个 raise Http404
.正如你所看到的,他们也会转换 PermissionDenied
403 状态码响应异常。所以你可以提高它而不是Http403。但是对于 401 你必须返回 return HttpResponse('Unauthorized', status=401)
类似的东西。
关于python - Django:如何引发 Http401 和 Http403 异常,如 Http404,RAISE EXCEPTION not RESPONSE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58933201/