import logging
from rest_framework.views import exception_handler as drf_exception_handler  # drf原生处理异常函数取别名
from rest_framework.views import Response
from rest_framework import status


logger = logging.getLogger('mylogger')


def exception_handler(exc, context):
    # drf的exception_handler做基础处理
    response = drf_exception_handler(exc, context)
    # 为空,进行自定义二次处理
    logger.error(str(exc))
    if response is None:
        # print(exc)        # 错误原因
        # print(context)    # 错误信息
        # print('%s - %s - %s' % (context['view'], context['request'].method, exc))
        return Response({
            'detail': '服务器错误'
        }, status=status.HTTP_500_INTERNAL_SERVER_ERROR, exception=True)
    return response