DEV Community

Cover image for Building REST API Endpoints with Django REST Framework: A Step-by-Step Guide
NJOKU SAMSON EBERE
NJOKU SAMSON EBERE

Posted on

Building REST API Endpoints with Django REST Framework: A Step-by-Step Guide

Django REST Framework (DRF) is one of the most powerful tools for building APIs in Python. Whether you're a beginner or an experienced developer looking to expand your skill set, understanding DRF is necessary for modern backend development.

Jump in to check the full video tutorial on YouTube: Watch the Video Here

In this guide, I'll walk you through the process of building REST API endpoints step-by-step using the Django REST Framework. From project setup to advanced features like Class-Based Views, Mixins, Generics, and Viewsets, you'll learn how to master DRF and create clean, scalable APIs.


What is Django REST Framework?

Django REST Framework (DRF) is a powerful, flexible toolkit for building Web APIs in Django. It simplifies the process of creating API endpoints, handling requests, and returning data in JSON or other formats.

Some of its key features include:

  • Serialization to convert complex data types into JSON
  • Class-Based Views for cleaner, reusable code
  • Authentication and permissions out of the box
  • Support for various data rendering formats (JSON, XML, etc.)

With DRF, you can easily create APIs that integrate with web and mobile applications.


Step-by-Step Guide to Building REST APIs with Django REST Framework

Below is a detailed guide with timestamps from my video tutorial for easy reference:


1. Introduction to REST APIs (00:00:00)

A quick overview of REST APIs and how they allow different applications to communicate using HTTP.

2. Setting Up a Django Project (00:05:50)

Start by installing Django and creating a new project:

pip install django
mkdir myproject && cd myproject
django-admin startproject config .
Enter fullscreen mode Exit fullscreen mode

3. Setting Up a Virtual Environment (00:09:56)

Creating a virtual environment ensures your dependencies remain isolated:

python -m venv venv
source venv/bin/activate  # On Windows use `venv\Scripts\activate`
pip install django djangorestframework
Enter fullscreen mode Exit fullscreen mode

4. Installing and Configuring Django REST Framework (00:16:02)

Add rest_framework to your INSTALLED_APPS in settings.py:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'rest_framework',
]
Enter fullscreen mode Exit fullscreen mode

5. Setting Up Models (00:17:15)

Create a model in your models.py. For example:

from django.db import models

class Student(models.Model):
    name = models.CharField(max_length=255)
    age = models.IntegerField()
    grade = models.CharField(max_length=10)

    def __str__(self):
        return self.name
Enter fullscreen mode Exit fullscreen mode

Run migrations to update the database:

python manage.py makemigrations
python manage.py migrate
Enter fullscreen mode Exit fullscreen mode

6. Setting Up the Admin Panel (00:20:05)

Register your model in the admin panel so you can manage data easily:

from django.contrib import admin
from .models import Student

admin.site.register(Student)
Enter fullscreen mode Exit fullscreen mode

7. Using Function-Based Views to Create API Endpoints (00:24:20)

Start by creating a simple API endpoint using a Function-Based View:

from rest_framework.decorators import api_view
from rest_framework.response import Response
from .models import Student
from .serializers import StudentSerializer

@api_view(['GET'])
def student_list(request):
    students = Student.objects.all()
    serializer = StudentSerializer(students, many=True)
    return Response(serializer.data)
Enter fullscreen mode Exit fullscreen mode

8. Switching to Class-Based Views (00:49:12)

Class-Based Views provide a cleaner structure for your views. Here's an example:

from rest_framework.views import APIView
from rest_framework.response import Response
from .models import Student
from .serializers import StudentSerializer

class StudentList(APIView):
    def get(self, request):
        students = Student.objects.all()
        serializer = StudentSerializer(students, many=True)
        return Response(serializer.data)
Enter fullscreen mode Exit fullscreen mode

9. Understanding Mixins and Generics (00:57:07 - 01:06:55)

Mixins and Generics help reduce boilerplate code. For example:

from rest_framework import generics
from .models import Student
from .serializers import StudentSerializer

class StudentListCreateView(generics.ListCreateAPIView):
    queryset = Student.objects.all()
    serializer_class = StudentSerializer
Enter fullscreen mode Exit fullscreen mode

10. Using Viewsets and Routers (01:06:55 - 01:13:05)

Viewsets combine views into a single class, and routers handle URL routing automatically:

from rest_framework import viewsets
from .models import Student
from .serializers import StudentSerializer

class StudentViewSet(viewsets.ModelViewSet):
    queryset = Student.objects.all()
    serializer_class = StudentSerializer
Enter fullscreen mode Exit fullscreen mode

Configure the router in urls.py:

from rest_framework.routers import DefaultRouter
from .views import StudentViewSet

router = DefaultRouter()
router.register(r'students', StudentViewSet, basename='student')

urlpatterns = router.urls
Enter fullscreen mode Exit fullscreen mode

11. Testing Your API

You can test your endpoints using tools like Postman, cURL, or even DRF's built-in browser interface.

For example, test your GET endpoint:

GET http://127.0.0.1:8000/students/
Enter fullscreen mode Exit fullscreen mode

Wrap Up (01:15:41)

By following these steps, you now have a fully functional REST API using Django REST Framework. You learned how to:

  1. Set up your Django project
  2. Use Function-Based and Class-Based Views
  3. Simplify your code with Mixins and Generics
  4. Leverage Viewsets and Routers for efficiency

With these skills, you're well-equipped to build and scale APIs for real-world applications.


Next Steps

  • Add authentication and permissions to secure your API.
  • Explore advanced topics like pagination, filtering, and throttling.
  • Deploy your API to production using tools like Docker and Heroku.

If you enjoyed this guide, check out the full video tutorial on YouTube where I explain each step in detail:
Watch the Video Here

Don’t forget to LIKE, SHARE, and SUBSCRIBE for more content on Django, REST APIs, and full-stack development!


Tags

#DjangoRESTFramework #RESTAPI #DjangoTutorial #PythonDevelopment #WebDevelopment #BackendDevelopment #APITutorial #LearnDjango

Top comments (0)