django項目之配置自定義異常處理類

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',
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章