1、在项目的utils目录中,创建一个exceptions.py文件
from rest_framework.views import exception_handler from django.db import DatabaseError from rest_framework.response import Response from rest_framework import status from redis.exceptions import RedisError import logging logger = logging.getLogger('django') def custom_exception_handler(exc, context): """ 自定义异常处理类 :param exc: 发生异常时的异常处理对象 :param context: 抛出异常的上下文 :return: Response响应对象 """ response = exception_handler(exc, context) if response is None: view = context["view"] if isinstance(exc, DatabaseError): # 数据库异常 logger.error('[%s]%s' % (view, exc)) return Response({"message": "数据库异常"}, status=status.HTTP_507_INSUFFICIENT_STORAGE) if isinstance(exc, RedisError): # redis异常 logger.error('[%s]%s' % (view, exc)) return Response({"message": "redis数据库异常"}, status=status.HTTP_507_INSUFFICIENT_STORAGE)
2、然后再配置文件中,注册这个异常处理类,(dev.py文件中加入如下代码)
# 数据库异常处理 REST_FRAMEWORK = { 'EXCEPTION_HANDLER': 'renranapi.utils.exceptions.custom_exception_handler', }