记一个比较通用的异常处理

django框架 2020-10-07 928

在使用drf框架时,比较头疼的是,返回特定的异常信息。

def custom_exception_handler(exc, context):

    from django.http import Http404
    from rest_framework import status

    exc_data = {
        "errors": [],
    }

    if isinstance(exc, Http404):
        exc_data["errors"].append({
            "message": "Sorry that page does not exist",
            "code": 404,
        })
    elif isinstance(exc.detail, list):
        for message in exc.detail:
            exc_data["errors"].append({
                "message": message,
                "code": exc.status_code,
            })
    else:
        exc_data["errors"].append({
            "message": exc.detail,
            "code": exc.status_code,
        })

    return Response(exc_data, status=status.HTTP_200_OK) # 注意status,这里返回的是200

旨在提供一种解决思路

标签:django框架

文章评论

评论列表

已有0条评论