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
Вернуться на верх