DRF display verbose message in error message for a custom exception handler
Here is my custom exception handler:
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
The problem here is whenever I send bad data I get a response like this:
{
"error": {
"email": [
"Enter a valid email address."
],
"phone_number": [
"asd is not a valid phone"
]
},
"code": "invalid",
"message": "Invalid input."
}
As you can see the message is just "Invalid input." But I want to get a verbose message here. Any idea about it?
Try out this maybe you will get it.!
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