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 }