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

    一、作用:无论程序是否正常执行,都可以在接口以统一格式返回数据(信息)。

    二、实现思路:自定义异常方法,替换掉默认方法。

    三、实现步骤

      1、写一个自定义异常处理方法。

      2、具体代码:

    from rest_framework.views import exception_handler  # 默认异常处理方法
    from rest_framework.response import Response
    from rest_framework import status
    # exc:异常对象,context:异常信息,可写入日志
    def new_exception_handler(exc, context):  
        response=exception_handler(exc, context)  # 先执行照默认方法
        # 默认方法遇到异常有两种情况
        # 列举的部分做了处理,将异常信息与异常状态码放入了response对象中返回
        # 剩余未处理的统一返回None,再由django处理,但是处理得非常粗糙
        if not response:  # 没有返回对象,说明遇到了未列举的异常
            # 具体异常之一
            if isinstance(exc, ZeroDivisionError):  
                return Response(data={'status': 1001, 'msg': "ZeroDivisionError相关的错误:{}".format(str(exc))}, status=status.HTTP_400_BAD_REQUEST)
            # 其他异常
            return Response(data={'status':2001,'msg':"其他异常:{}".format(str(exc))},status=status.HTTP_400_BAD_REQUEST)
        else:
            # 重新组织默认方法处理的结果
            return Response(data={'status':3001,'msg':response.data.get('detail')},status=status.HTTP_400_BAD_REQUEST)

      3、在setting.py中配置方可生效:

    REST_FRAMEWORK = {
        'EXCEPTION_HANDLER': 'app01.limiter.new_exception_handler',
    }
  • 相关阅读:
    centos下安装Anaconda
    centos下安装python2.7.9和pip以及数据科学常用的包
    mysql基础(5)-关联(mysql+pandas)
    mysql基础(4)-数据导入
    mysql基础(3)-高级查询
    mysql基础(2)-数据处理(mysql+pandas)
    mysql基础(1)-基本操作
    创建线程的三种方法
    Jar 包 及运行Jar包
    导出成可运行jar包时所遇问题的解决办法
  • 原文地址:https://www.cnblogs.com/caoyu080202201/p/13279885.html
Copyright © 2011-2022 走看看