Serializers in Django REST Framework (DRF) convert complex Django objects into native Python data types that can be rendered into JSON, XML, or other formats. They also handle validation and transformation of incoming data.
DRF serializers work similarly to Django forms but are designed specifically for APIs and structured data exchange.
# Basic serializer using Serializer class
from rest_framework import serializers
class BookSerializer(serializers.Serializer):
title = serializers.CharField(max_length=255)
author = serializers.CharField(max_length=255)
price = serializers.DecimalField(max_digits=5, decimal_places=2)
# Django model for Book
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=255)
author = models.CharField(max_length=255)
price = models.DecimalField(max_digits=5, decimal_places=2)
# ModelSerializer automatically maps model fields
from rest_framework import serializers
from .models import Book
class BookSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = ['title','author','price']
When serialized, model instances are converted into JSON-friendly dictionaries which can be returned in API responses.
# Nested serializers for related models
class PublisherSerializer(serializers.ModelSerializer):
class Meta:
model = Publisher
fields = ['name']
class BookSerializer(serializers.ModelSerializer):
publisher = PublisherSerializer()
class Meta:
model = Book
fields = ['title','author','publisher','price']
Fill in the "Model" fields below and click Serialize to see how DRF transforms the object into JSON.
# JSON Output will appear here...