全局异常的配置

  1. dev.py文件中配置以下内容

    REST_FRAMEWORK = {
        'EXCEPTION_HANDLER': 'utils.exception.common_exception_handler'  # 再出异常,会执行这个函数
    }
    
  2. 在utils文件夹下新建excepiton.py

    
    ## 全局异常捕获
    
    from rest_framework.views import exception_handler  # 默认没有配置,出了异常会走它
    from rest_framework.response import Response
    from utils.logging import logger
    
    def common_exception_handler(exc, context):
        res = exception_handler(exc, context)
        if res:
            res = Response(data={'code': 998, 'msg': res.data.get('detail', '服务器异常,请联系系统管理员')})
        else:
            res = Response(data={'code': 999, 'msg': str(exc)})
        request = context.get('request')
        view = context.get('view')
        logger.error('错误原因:%s,错误视图类:%s,请求地址:%s,请求方式:%s' % (str(exc), str(view), request.path, request.method))
        return res
    
posted @ 2022-04-26 13:57  recordlife  阅读(57)  评论(0编辑  收藏  举报