Django rest framework: Как глобально изменить формат ответа на ошибку? и Как переопределить ответ, возвращаемый API.? - PullRequest
0 голосов
/ 02 марта 2020

Я использую Django API Oscar Restful и настраиваю его. Я хочу переопределить класс Response инфраструктуры Django rest, чтобы в ответе содержалось сообщение с тремя параметрами, состояние и данные. Я знаю, что для ModelViewSet на основе классов я могу переопределить метод create и вернуть пользовательский ответ, но я хочу реализовать его для всех API, поэтому мне не нужно переписывать все API, которые Django oscar RESTFUL API обеспечивает по умолчанию.

пользовательский ответ, который я хочу вернуть из всех представлений:

{
  "status": True
  "data": [
    {
        "var1": 1,
        "var2": 2
    }
  ],
  "message": "This is my success message",
}

В случае ошибок отображаются ошибки по умолчанию в следующем формате:

{
  "email": [
    "Enter a valid email address."
  ]
}

or

{
    "name": [
        "This field may not be blank."
    ]
}

Я хочу изменить этот формат и всегда возвращать Ответ в следующем формате:

{
  "status": False
  #Here i want the errors as handled by Django rest, but not in the list format, i want the error msg same as Given by Django rest, as:"
  "message": 'name :This field may not be blank.'
  or 
  "message": 'email: Enter a valid email address.' 
}

Я проверил, как сделать custom_exception_handler , но я не знаю, как мне реализовать это для всех моих представлений (на основе классов или представлений API). Я знаю, что должен использовать классы 'renderer' . Рендерер манипулирует и возвращает структурированный ответ.

Пожалуйста, могу ли я получить пример того, как я могу вернуть этот формат в случае успеха и неудачи в API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...