zoukankan      html  css  js  c++  java
  • 【1119 | Day62】drf之异常模块

    一、异常模块

    重写异常模块目的是记录异常信息(项目上线)。

    二、具体配置

    分析:

    1. 在settings的drf配置中配置EXCEPTION_HANDLER,指向自定义的exception_handler函数

    2. drf出现异常了,都会回调exception_handler函数,携带异常对象和异常相关信息内容

    3. 在exception_handler函数完成异常信息的返回以及异常信息的logging日志

    例如:

    #settings.py
    
    REST_FRAMEWORK = {
    
        # 异常模块
        # 'EXCEPTION_HANDLER': 'rest_framework.views.exception_handler',
        
        'EXCEPTION_HANDLER': 'api.utils.exception_handler',
    }
    
    #api/utils.py(自定义模块)
    
    from rest_framework.response import Response
    from rest_framework.views import exception_handler as drf_exception_handler
    from rest_framework import status
    
    
    def exception_handler(exc, context):
        response = drf_exception_handler(exc, context)
    
        if response is None:  # drf没有处理的异常(服务器异常)
            return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR, data={
                'status': 7,
                'exc': '%s' % exc
            })
    
        # 项目阶段,要记录到日志文件
        return Response(status=response.status_code, data={
            'status': 7,
            # drf处理的客户端异常,原始处理方式是将异常信息放在response对象的data中,data的格式是{'datail': '具体的异常信息'}
            'exc': '%s' % response.data.get('detail')
        })
    
    

    核心:

    异常信息都需要被logging记录,所以需要自定义。

    drf只处理客户端异常,服务器异常需要手动处理,统一处理结果。

  • 相关阅读:
    [Violet]天使玩偶/SJY摆棋子
    语音识别终极教程
    语音识别
    转:awesome-lane-detection
    转:awesome-object-detection
    转:Awesome
    转:Awesome Image/Video segmentation
    转:目标检测算法总结
    转:10行代码实现物体检测
    转:词向量word2vector那些事儿
  • 原文地址:https://www.cnblogs.com/fxyadela/p/11892355.html
Copyright © 2011-2022 走看看