Как выполнить некоторые задачи с входящим запросом перед его сохранением или ответом с помощью django rest framework? - PullRequest
0 голосов
/ 21 июня 2020

Я новичок в django, я пытаюсь перенести старый API, встроенный в express на Django Rest Framework, краткая история: API предназначен для получения различных типов пейплодов с разных устройств , в примере

{
   "device": "device001",
   "deviceType": "temperature_device",
   "deviceTs": timestamp,
   "payload": {
      "airTemp": X,
      "airHum": Y,
   }
}

полезная нагрузка не всегда будет одинаковой, поэтому другие устройства (другого типа) будут вводить разные пары ключ-значение в поле «полезная нагрузка».

I Я использую Django Rest Framework, наряду с сериализаторами моделей и GenericViewSet,

, но проблема в том, что перед сохранением данных в БД и возвратом HTTP-ответа мне нужно выполнить проверку данных (минимум, и максимальные значения), а в некоторых случаях устройство отправляет некоторые "поврежденные" данные (в примере: отрицательное число имеет следующий синтаксис: 1.-5 вместо -1.5), мне нужно исправить эти значения и так далее, наконец , Мне нужно выполнить два HTTP-запроса к внешнему API с фиксированной полезной нагрузкой и ключом API (который должен храниться в модели сведений об устройстве в моей базе данных)

так что, я Вкратце, как я могу выполнить любую -предыдущую работу- с запросом ПЕРЕД сохранением данных в БД и возвратом HTTP-ответа?

1 Ответ

0 голосов
/ 21 июня 2020

Вы получите свою полезную нагрузку в request.data, после чего вам нужно будет сериализовать ее и проверить свою полезную нагрузку в соответствии с вашими требованиями.

Вот документ сериализации DRF , который поможет вам понять, как именно работает сериализация.

А вот документы DRF Validators , чтобы понять, как работают валидаторы.

...