DRF отображает подробное сообщение в сообщении об ошибке для пользовательского обработчика исключений
Вот мой пользовательский обработчик исключений:
def my_exception_handler(exc, context):
response = exception_handler(exc, context)
if response is not None:
error_code = 'unknown'
if hasattr(exc, 'default_code') :
error_code = exc.default_code
message = ''
if hasattr(exc, 'default_detail'):
message = exc.default_detail
error = {
"error":response.data,
"code":error_code,
'message':message,
}
response.data = error
return response
Проблема в том, что всякий раз, когда я посылаю плохие данные, я получаю ответ следующего содержания:
{
"error": {
"email": [
"Enter a valid email address."
],
"phone_number": [
"asd is not a valid phone"
]
},
"code": "invalid",
"message": "Invalid input."
}
Как вы видите, сообщение просто "Invalid input". Но я хочу получить более подробное сообщение. Есть идеи по этому поводу?
Попробуйте, может быть, у вас получится!
def handle_exception(exc, context):
error_response = exception_handler(exc, context)
if error_response is not None:
error = error_response.data
if isinstance(error, list) and error:
if isinstance(error[0], dict):
error_response.data = get_response(
message=get_error_message(error),
status_code=error_response.status_code,
)
elif isinstance(error[0], str):
error_response.data = get_response(
message=error[0],
status_code=error_response.status_code
)
if isinstance(error, dict):
error_response.data = get_response(
message=get_error_message(error),
status_code=error_response.status_code
)
return error_response