restframework自定义错误捕获

在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自定义错误捕获

上一篇:(十一)网络层--ICMP


下一篇:将vue项目打包后放到nginx服务器