📡 You're offline — showing cached content
New version available!
Quick Access
Tutorials Django Framework Django REST Framework

Django REST Framework

6 min read Quiz at the end
Build APIs with DRF Serializers, ModelViewSet, DefaultRouter, and permission classes.

Django REST Framework (DRF)

pip install djangorestframework
# INSTALLED_APPS += ["rest_framework"]

from rest_framework import serializers, viewsets, permissions
from rest_framework.routers import DefaultRouter

class PostSerializer(serializers.ModelSerializer):
    author_name = serializers.CharField(source="author.get_full_name", read_only=True)

    class Meta:
        model  = Post
        fields = ["id","title","slug","body","author_name","created_at"]
        read_only_fields = ["slug","created_at"]

class PostViewSet(viewsets.ModelViewSet):
    queryset           = Post.objects.select_related("author").filter(is_draft=False)
    serializer_class   = PostSerializer
    permission_classes = [permissions.IsAuthenticatedOrReadOnly]

    def perform_create(self, serializer):
        serializer.save(author=self.request.user)

# Register router
router = DefaultRouter()
router.register("posts", PostViewSet)

urlpatterns = [path("api/", include(router.urls))]
Topic Quiz · 3 questions

Test your understanding before moving on

1. What is DRF?
💡 DRF adds serializers, viewsets, routers, and auth for building APIs.
2. What does a DRF Serializer do?
💡 Serializers handle validation, deserialization, and serialization.
3. What does DefaultRouter do?
💡 DefaultRouter generates standard REST URLs for registered ViewSets.