码迷,mamicode.com
首页 > 其他好文 > 详细

异常处理 Exceptions

时间:2019-08-25 00:52:07      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:err   定义   handler   except   tor   int   res   one   storage   

异常处理 Exceptions

REST framework提供了异常处理,我们可以自定义异常处理函数。

from rest_framework.views import exception_handler

def custom_exception_handler(exc, context):
    # 先调用REST framework默认的异常处理方法获得标准错误响应对象
    response = exception_handler(exc, context)

    # 在此处补充自定义的异常处理
    if response is not None:
        response.data[status_code] = response.status_code

    return response

在配置文件中声明自定义的异常处理

REST_FRAMEWORK = {
    #配置异常句柄
    EXCEPTION_HANDLER: my_project.my_app.utils.custom_exception_handler
}

如果未声明,会采用默认的方式,如下

REST_FRAMEWORK = {
    EXCEPTION_HANDLER: rest_framework.views.exception_handler
}

例如:

补充上处理关于数据库的异常

from rest_framework.views import exception_handler as drf_exception_handler
from rest_framework import status
from django.db import DatabaseError

def exception_handler(exc, context):
    response = drf_exception_handler(exc, context)

    if response is None:
        view = context[view]
        if isinstance(exc, DatabaseError):
            print([%s]: %s % (view, exc))
            response = Response({detail: 服务器内部错误}, status=status.HTTP_507_INSUFFICIENT_STORAGE)

    return response

 

REST framework定义的异常

  • APIException 所有异常的父类

  • ParseError 解析错误

  • AuthenticationFailed 认证失败

  • NotAuthenticated 尚未认证

  • PermissionDenied 权限决绝

  • NotFound 未找到

  • MethodNotAllowed 请求方式不支持

  • NotAcceptable 要获取的数据格式不支持

  • Throttled 超过限流次数

  • ValidationError 校验失败

异常处理 Exceptions

标签:err   定义   handler   except   tor   int   res   one   storage   

原文地址:https://www.cnblogs.com/HZLS/p/11406487.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!