В предыдущих материалах мы описали особенности Django Views и основные подходы проектирования API, теперь можно разобраться, какие django-пакеты помогают с реализацией.
Популярные django-пакеты — это консенсус сообщества в реализации той или иной функциональности
В материале рассмотрим два наиболее популярных пакета:
- Django REST Framework (DRF) — фреймворк для создания API "по умолчанию". Создан в 2011 году и наиболее распространен
- Django Ninja — фреймворк с фокусом на производительность. Вдохновлен FastAPI, Pydantic и использует актуальные возможности Python
Основные понятия
Каждый API работает с одинаковым набором сущностей и действий:
Основные понятия:
- Схема данных — декларативное описание состава и способа организации данных. Может отличаться "на вход" и "на выход"
- Формат представления данных — стандартизированный (между клиентом и сервером) способ передачи данных. Часто JSON
- Обработка данных — дополнение/преобразование/изменение данных с целью выполнить бизнес-логику
- Сериализация — преобразование (Python-)объекта в формат данных для последующей передачи
- Валидация — проверка соответствия данных указанной схеме. Часто применяется на входе в API
В конкретном фреймворке для всего этого могут применяться свои термины/сущности, группироваться под одним названием, но суть от этого не изменится:
| Общее понятие | Django REST Framework | Django Ninja |
|---|---|---|
| Схема данных | Класс Serializer | Класс Schema |
| Сериализация | Метод .data (Serializer) |
Метод .dict() (Schema) |
| Десериализация | Метод .is_valid() + .validated_data |
Автоматически при передаче в функцию |
| Валидация | Метод .is_valid() |
Pydantic валидация |