重写
from rest_framework.views import exception_handler as drf_exception_handler
from rest_framework.response import Response
def exception_handler(exc, context):
# drf_exception_handler的执行结果就是异常信息的Response对象或None
# 是Response对象可以直接返回
# 是None可以从exc中拿到异常信息,从context拿到是谁出现的异常,自己格式化成Response对象返回
# 重点:自定义异常模块目的是记录异常信息到日志文件 - 产品阶段
response = drf_exception_handler(exc, context)
if response is None:
response = Response({'detail': '%s' % exc}, status=500, exception=True)
# logging.error(response.data)
return response
settings中的配置
REST_FRAMEWORK = {
# 异常模块
# 'EXCEPTION_HANDLER': 'rest_framework.views.exception_handler',
'EXCEPTION_HANDLER': 'utils.exception.exception_handler',
}