Короткий ответ
Сериализация в контексте 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.
Подводные камни
- Лишние поля. В сериализатор могут попасть нежелательные данные — явно перечисляй нужные поля.
- Путаница с json. Не смешивай сериализаторы DRF со встроенным модулем json — это разные уровни преобразования.
- Сложные типы. Некоторые поля моделей требуют явного описания или кастомной логики сериализации.
Как отвечать на собеседовании
- Дай определение сериализации как преобразования моделей и QuerySet в JSON или XML и обратно → покажи ModelSerializer на примере модели Student → упомяни валидацию входящих данных и роль связующего звена между Django и фронтендом.