异常 response 重写

 1 # response_expestion.py
 2 
 3 from rest_framework.views import exception_handler
 4 from rest_framework import status
 5 from rest_framework.response import Response
 6 
 7 
 8 class APIResponse(Response):
 9     def __init__(self, result=None, code=None, msg='成功', status=None, headers=None, content_type=None, **kwargs):
10         dic = {
11             'code': code,
12             'msg': msg
13         }
14         if result:
15             dic['result'] = result
16         else:
17             dic.update(kwargs)
18         super().__init__(data=dict, status=status, headers=headers, content_type=None)
19 
20 # 异常封装
21 def comm_exception_handler(exc, context):
22     '''
23     :param exc: 错误对象
24     :param context: 哪个视图哪个函数错误 (做日志使用)
25     '''
26     # response --- None Response
27     response = exception_handler(exc, context)
28     if not response:
29         if isinstance(exc, ZeroDivisionError):
30             return APIResponse(data={'status': 777, 'msg': "除以0的错误" + str(exc)}, status=status.HTTP_400_BAD_REQUEST)
31     else:
32         return APIResponse(data={'status': 888, 'msg': response.data.get('detail')}, status=status.HTTP_400_BAD_REQUEST)
33 
34 # settings
35 REST_FRAMEWORK = {
36 'EXCEPTION_HANDLER': 'app01.response_expestion.comm_exception_handler',
37 }

 

posted @ 2021-05-23 20:14  mofr  阅读(167)  评论(0)    收藏  举报