python - Django:如何引发 Http401 和 Http403 异常,如 Http404,RAISE EXCEPTION not RESPONSE

标签 python django exception

我正在尝试使用 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/

相关文章:

html - 为什么 Django forms.TextField 占用这么多空间,即使文本输入区域很小?

python - Django 模型管理器根据查找值获取查询集

python - TensorFlow 神经网络输出线性函数

python - 使用特定条件在 pandas 数据框中创建汇总行

python - Django删除查询集的最后五个以外的所有内容

java - 为什么要先捕获 ArrayIndexOutOfBoundsException 再捕获 IndexOutOfBoundsException?

python - 转换为 Pandas Datetime 以仅包含时间时出错

python - gunicorn django 上的 CRITICAL WORKER TIMEOUT 错误

java - 在全局位置存储异常消息

php - 什么时候应该使用 PHP 异常?