В предыдущих материалах мы описали особенности 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 валидация |