Ответ
Сериализатор в Django REST Framework (DRF) — это компонент, который преобразует сложные типы данных, такие как QuerySet'ы и экземпляры моделей Django, в нативные типы Python. Затем эти типы легко преобразуются в JSON, XML или другие форматы для передачи через API.
Основная задача сериализатора — определить, какие поля модели будут включены в API-ответ и как будут обрабатываться входящие данные, обеспечивая четкий и безопасный контракт API.
Ключевые функции:
- Сериализация (Python → JSON): Преобразование объектов Django в словарь для отправки клиенту.
- Десериализация (JSON → Python): Преобразование полученных от клиента данных в объекты Python.
- Валидация: Проверка корректности и полноты входящих данных перед их сохранением в базу данных.
Пример использования ModelSerializer:
Предположим, у нас есть модель Article:
# models.py
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=120)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
Сериализатор для этой модели будет выглядеть так:
# serializers.py
from rest_framework import serializers
from .models import Article
class ArticleSerializer(serializers.ModelSerializer):
class Meta:
model = Article
fields = ['id', 'title', 'content', 'created_at']
read_only_fields = ['created_at'] # Поле только для чтения
ModelSerializerавтоматически генерирует поля и валидаторы на основе указанной модели Django, что значительно сокращает объем кода.- Для более сложной логики используется базовый класс
serializers.Serializer, где все поля и правила валидации описываются вручную.