当前位置:   article > 正文

django自定义异常处理

django自定义异常

1.在utils目录下创建exceptions.py文件,并编写自定义异常处理方法

from django.db import DatabaseError
from rest_framework.response import Response
from rest_framework.views import exception_handler
from rest_framework import status
from redis import RedisError
import logging
log = logging.getLogger("django")

def custom_exception_handler(exc, context):
    """
    自定义异常处理
    :param exc: 本次请求发生的异常信息
    :param context: 本次请求发送异常的执行上下文[ 本次请求的request对象,异常发送的时间,行号等...]
    :return: Response响应对象
    """
    response = exception_handler(exc, context)

    if response is None:
        """当response结果为None时,则当前程序运行的结果有2种可能: 
          1. 程序真的没有报错!
          2. 程序报错了,但是drf框架不识别!
        """
        view = context["view"]
        if isinstance(exc, DatabaseError) or isinstance(exc, RedisError):
            """数据库异常"""
            log.error('[%s] %s' % (view, exc))
            return Response("系统内部存储错误!",  status=status.HTTP_507_INSUFFICIENT_STORAGE)

    return response

2.在settings/dev.py文件中添加自定义异常处理模块

REST_FRAMEWORK = {
    # 异常处理
    'EXCEPTION_HANDLER': 'yd_api.utils.exceptions.custom_exception_handler',
}
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/979482
推荐阅读
相关标签
  

闽ICP备14008679号