Короткий ответ
Сериализация в контексте Django REST Framework — это преобразование сложных Python-объектов, таких как модели и QuerySet, в простые форматы данных, обычно JSON или XML. Обратная операция, десериализация, превращает входящие данные из HTTP-запроса обратно в Python-объекты.
Как это работает подробнее
Сериализаторы выступают связующим звеном между моделями Django и JSON-представлением данных в REST API.
- Прямое преобразование. Сериализатор превращает экземпляр модели или QuerySet в данные для ответа API, которые понимает браузер и JavaScript.
- Обратное преобразование. Входящий JSON десериализуется в Python-объекты для дальнейшей работы серверной логики.
- Валидация. Встроенные проверки сериализаторов гарантируют, что входящие данные корректны до сохранения в базу данных.
- Два подхода. Обычный Serializer описывает поля вручную, а ModelSerializer автоматически генерирует поля на основе модели.
Пример кода
Сериализатор студента на базе ModelSerializer
from rest_framework import serializers
class StudentSerializer(serializers.ModelSerializer):
class Meta:
model = Student
fields = ['id', 'name', 'age']Что использовать на практике
- ModelSerializer. Для типовых моделей используй ModelSerializer, чтобы поля автоматически брались из модели.
- Валидация данных. Полагайся на встроенную валидацию сериализаторов для входящих данных.
- Единый слой. Строй API на сериализаторах как на связующем звене между моделями и JSON.