zoukankan      html  css  js  c++  java
  • 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',
    }
    世间安得双全法,不负如来不负卿
  • 相关阅读:
    Django之模板
    Django之视图
    Django之web框架和url路由
    SpringBoot整合Druid数据源
    SpringBoot整合定时任务异步任务
    逐行解读HashMap源码
    SpringBoot通过RedisTemplate执行Lua脚本
    SpringBoot使用H2内嵌数据库
    SpringBoot如何使用拦截器
    SpringBoot热部署的实现方式
  • 原文地址:https://www.cnblogs.com/shangguanruoling/p/12145506.html
Copyright © 2011-2022 走看看