drf框架对自己内部定义的方法做了特殊处理 比如:频率控制组件 返回特殊的信息
如何在drf异常处理的基础上再重新包装异常
from rest_framework.views import exception_handler from rest_framework.response import Response import logging error_log = logging.getLogger('') def custom_exception_handler(exc, context): '''重定义异常(使异常返回值符合规范)''' # 先让drf内部做处理 response = exception_handler(exc, context) # drf处理过得异常 可以按照自己的规范来返回 if response: '''drf内部错误''' print(response.data) detail = response.data.get('detail') non_field_errors = response.data.get('non_field_errors') if detail: return Response({"code": 1001, "msg": detail}) if non_field_errors: return Response({"code": 1001, "msg": non_field_errors[0]}) return response # 没有经过drf处理的异常比如代码报错 我们可以捕捉下来写入日志 else: '''异常写入日志''' error_views = context['view'] error_info = repr(exc) error_line = [] trace = exc.__traceback__ while trace: error = '"%s" line %s' % (trace.tb_frame.f_code.co_filename, trace.tb_lineno) print('