gpt4 book ai didi

django - 如何在 django Rest 框架中使用自定义错误代码抛出自定义异常并覆盖异常响应中的默认字段

转载 作者:行者123 更新时间:2023-12-02 09:30:08 29 4
gpt4 key购买 nike

我想知道如何在 django Rest 框架中抛出自定义异常,其中包含自定义 error_code 和自定义消息。我对 APIException() 不感兴趣,因为此函数不允许动态设置错误代码。另外,我想知道如何更改异常消息的details键json响应。

最佳答案

I found the solution for all of my questions

api_exceptions.py

from rest_framework.views import exception_handler
from rest_framework.exceptions import APIException

自定义异常处理程序

def custom_exception_handler(exc, context):

response = exception_handler(exc, context)

if response is not None:
response.data['status_code'] = response.status_code

#replace detail key with message key by delete detail key
response.data['message'] = response.data['detail']
del response.data['detail']

return response

自定义Api异常

class CustomApiException(APIException):

#public fields
detail = None
status_code = None

# create constructor
def __init__(self, status_code, message):
#override public fields
CustomApiException.status_code = status_code
CustomApiException.detail = message

设置.py

REST_FRAMEWORK = {
'EXCEPTION_HANDLER': 'utilities.helpers.api_exceptions.custom_exception_handler',
}

your_view.py

raise CustomApiException(333, "My custom message")

#json response
{
"status_code": 333,
"message": "My custom message"
}

关于django - 如何在 django Rest 框架中使用自定义错误代码抛出自定义异常并覆盖异常响应中的默认字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32764466/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com