首页 > 其他 > 详细

restframework自定义错误捕获

时间:2021-06-23 00:40:41      阅读:30      评论:0      收藏:0      [点我收藏+]

在settings中配置自己的异常处理函数

# rest_framework 异常处理
REST_FRAMEWORK = {
    EXCEPTION_HANDLER: luffyapi.utils.exceptions.luffy_exception_handler
}

编写异常处理函数

import logging
from django.db import DataError
# rest_framework 默认使用的异常处理
from rest_framework.views import exception_handler
from rest_framework.response import Response
from rest_framework.status import *

logger = logging.getLogger(django)


def luffy_exception_handler(exc, context):
    """

    :param exc: 错误类型
    :param context: 本次发生异常的上下文[request对象 异常发生的时间 行号 等信息 ]
    :return:
    """
    # 先执行rest_framework的默认异常处理
    response = exception_handler(exc, context)
    if response is None:
        view = context["view"]
        # 这里处理我们自己的异常逻辑
        if isinstance(exc, DataError):
            # 数据库异常
            # 将异常写入到日志文件
            logger.error(
                [%s] %s % (view, exc)
            )
            response = Response(
                {detail: 内部错误}, status=HTTP_507_INSUFFICIENT_STORAGE
            )

    return response

 

restframework自定义错误捕获

原文:https://www.cnblogs.com/wtil/p/14920621.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!