异常处理(统一接口返回)

异常处理统一

# 统一接口返回

# 自定义异常方法,替换掉全局
# 写一个方法
# 自定义异常处理的方法
from rest_framework.views import exception_handler
from rest_framework.response import Response
from rest_framework import status

def my_exception_handler(exc, context):
    response = exception_handler(exc, context)
    # 两种情况:
    # 一个是None,drf没有处理
    # 另一个是response对象 django处理了 但是处理的不符合咱们的要求
    # print(exc)
    # print(context)
    if not response:
        if isinstance(exc, ZeroDivisionError):
            return Response(data={'status': 777, 'msg': "除以0" + str(exc)}, status=status.HTTP_400_BAD_REQUEST)
        return Response(data={'status': 999, 'msg': str(exc)}, status=status.HTTP_400_BAD_REQUEST)
    else:
        # return response
        return Response(data={'status': 888, 'msg': response.data.get('detail')}, status=status.HTTP_400_BAD_REQUEST)
    
# 全局配置setting.py
'EXCEPTION_HANDLER': 'app01.app_auth.my_exception_handler',

posted @ 2023-11-01 22:10  PiggThird  阅读(36)  评论(0)    收藏  举报