我尝试使用Django创建一个api,并验证请求头是否包含api键,并根据该键引发异常,如下所示:
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\u object\u或\u 404。你知道吗
编辑/更新: 有关更多详细信息和解释,内置的Http404异常会引发以下问题: Http404
但我试图提出的例外(与Http404完全相同)提出了以下问题: Http403
这是处理异常的Django代码:
正如您在这里看到的,Django将处理
Http404
和PermissionDenied
异常。Http 401响应似乎没有例外。你知道吗PermissionDenied
(Http 403)异常如下(类似于Http404异常):所以它应该和
raise PermissionDenied
一起工作。你知道吗Django文档:Error views
响应有handler和异常converter,允许您执行
raise Http404
。如您所见,它们还将PermissionDenied
异常转换为带有403状态代码的响应。因此,您可以提高it而不是Http403。但是对于401你必须返回return HttpResponse('Unauthorized', status=401)
类似的东西。你知道吗相关问题 更多 >
编程相关推荐