drf 中 自定义 异常处理方法
1,在项目的utils目录中,创建 exception.py :
from rest_framework.views import exception_handler
from rest_framework.response import Response
def custom_exception_handler(exc, context):
response = exception_handler(exc, context)
if response:
detail = response.data.get('detail')
non_field_errors = response.data.get('non_field_errors')
# 异常响应
if detail:
return Response({'status': response.status_code, 'msg': detail, 'result': {}}) #根据status_code 来判断返回的异常的类型
elif non_field_errors:
return Response({'status': response.status_code, 'msg': non_field_errors[0], 'result': {}})
else:
# return Response({'response': '接口参数错误', 'result': {}, 'code': '', 'tips': response.data})
return Response({'status': response.data, 'msg': '接口参数错误', 'result': {}, 'tips': response.data})
2,在项目的settings.py 文件中,添加至全局:
REST_FRAMEWORK = { 'EXCEPTION_HANDLER': 'utils.exception.custom_exception_handler', # 自定义异常处理 # 分页 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination', 'PAGE_SIZE': 5, # 查询,过滤 'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',), }
3,结束!
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步