zoukankan      html  css  js  c++  java
  • 异常处理 Exceptions

    异常处理 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 校验失败

  • 相关阅读:
    防止SSH自动断线
    php intval()和floatval()
    开启 intel vt-d
    前用户sudo免密码
    分区工具parted的详解及常用分区使用方法
    Proxmox qm命令应用实例
    Mac上制作Centos7系统U盘安装盘
    FinalShell Mac OS版,Linux版安装及教程
    python爬虫彩票案例,并自动发微信
    Python利用itchat库向好友或者公众号发消息
  • 原文地址:https://www.cnblogs.com/HZLS/p/11406487.html
Copyright © 2011-2022 走看看