| 12345678910111213141516171819202122232425262728293031323334 |
- """
- 自定义异常处理
- 通过restformwork 的setting配置引用 REST_FRAMEWORK --> EXCEPTION_HANDLER
- """
- from rest_framework.views import exception_handler
- from rest_framework.views import Response
- from rest_framework import status
- from rest_framework.exceptions import ValidationError, ErrorDetail
- def custom_exception_handler(exc, context):
- response = exception_handler(exc, context)
- if response is None:
- return Response({
- 'code': status.HTTP_500_INTERNAL_SERVER_ERROR,
- 'msg': '{exc}'.format(exc=exc),
- 'data': ''
- }, status=status.HTTP_500_INTERNAL_SERVER_ERROR, exception=True)
- else:
- msg = '{exc}'.format(exc=exc)
- if isinstance(exc, ValidationError):
- for key, value in exc.get_full_details().items():
- if value and isinstance(value, list):
- value = value[0]["message"]
- if isinstance(value, ErrorDetail):
- msg = f"{key} {value}"
- return Response({
- 'code': response.status_code,
- 'msg': msg,
- 'data': ''
- }, status=200, exception=True)
|