Я создаю подкласс класса APIException остальной структуры Django для создания пользовательских исключений API. Например, одно из моих исключений выглядит так:
class Unauthorized(APIException):
status_code = 401
default_detail = 'You have to login first.'
default_code = 'ERR_UNAUTHORIZED'
И я написал собственный обработчик исключений для изменения имен ключей. Это часть в моем обработчике исключений, которая имеет дело с такими видами исключений:
def custom_exception_handler(exc, context):
response.data['code'] = response.data['detail'].code
response.data['message'] = response.data['detail']
print(response.data)
del response.data['detail']
return response
В результате выходные данные для моих исключений выглядят так:
{
"code": "ERR_UNAUTHORIZED",
"message": "You have to login first."
}
Что мне нужно чтобы сделать это, я хочу добавить новое поле в мои исключения, чтобы вывод моих исключений стал похож на следующий пример:
{
"code": "ERR_UNAUTHORIZED",
"message": "You have to login first.",
"extra" : "{ "description" : "extra info" }"
}
И в моих представлениях я хочу выбросить это исключение следующим образом:
raise Unauthorized(extra={ "description" : "extra info" })
Я довольно новичок в Django rest_framework, я искал об этом, а также пытался добавить "another field"
в мои поля класса пользовательских исключений, но это не решило мою проблему. Есть ли способы сделать что-то подобное?