Sitemap

How to Create a Django Rest Framework (DRF) Project: A Beginner’s Guide

2 min readJan 16, 2025

Django Rest Framework (DRF) is a powerful toolkit for building APIs in Django. It simplifies the creation of RESTful APIs by providing out-of-the-box tools like serializers, views, and authentication. In this blog post, we’ll walk you through the steps to create a simple DRF project from scratch.

Step 1: Setting Up Your Environment

First, ensure you have Python installed (preferably version 3.8 or higher). Then, create and activate a virtual environment:

python -m venv env
source env/bin/activate # Use `env\Scripts\activate` on Windows

Install Django and Django Rest Framework:

pip install django djangorestframework

Step 2: Start a New Django Project

Create a new Django project using the django-admin command:

django-admin startproject myapi
cd myapi

Step 3: Create a Django App

Create an app to house your API logic:

python manage.py startapp blog

Add the new app to your project settings in myapi/settings.py:

INSTALLED_APPS = [

'blog',
'rest_framework',
]

Step 4: Define a Model

In the blog/models.py file, define a simple model for a blog post:

from django.db import models

class BlogPost(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)

def __str__(self):
return self.title

Run migrations to apply this model to the database:

python manage.py makemigrations
python manage.py migrate

Step 5: Create a Serializer

Serializers convert complex data (like Django models) into JSON format. Create a serializers.py file in the blog app and add:

from rest_framework import serializers
from .models import BlogPost

class BlogPostSerializer(serializers.ModelSerializer):
class Meta:
model = BlogPost
fields = '__all__'

Step 6: Create API Views

DRF provides generic views to simplify API creation. Add the following views to blog/views.py:

from rest_framework import generics
from .models import BlogPost
from .serializers import BlogPostSerializer

class BlogPostListCreateView(generics.ListCreateAPIView):
queryset = BlogPost.objects.all()
serializer_class = BlogPostSerializer

class BlogPostDetailView(generics.RetrieveUpdateDestroyAPIView):
queryset = BlogPost.objects.all()
serializer_class = BlogPostSerializer

Step 7: Define API Routes

In blog/urls.py, set up routes for the views:

from django.urls import path
from .views import BlogPostListCreateView, BlogPostDetailView

urlpatterns = [
path('posts/', BlogPostListCreateView.as_view(), name='blogpost-list-create'),
path('posts/<int:pk>/', BlogPostDetailView.as_view(), name='blogpost-detail'),
]

Include the blog app’s URLs in the project’s main urls.py:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
path('admin/', admin.site.urls),
path('api/', include('blog.urls')),
]

Step 8: Test the API

Start the development server:

python manage.py runserver

Visit the following URLs in your browser or API testing tool like Postman:

GET all posts: http://127.0.0.1:8000/api/posts/

POST a new post: http://127.0.0.1:8000/api/posts/

GET, PUT, DELETE a specific post: http://127.0.0.1:8000/api/posts/<id>/

Conclusion

Congratulations! You’ve built your first Django Rest Framework project. This example covers the basics, but DRF offers much more, including authentication, permissions, throttling, and custom views. Explore the official DRF documentation to dive deeper into its capabilities.

Stay tuned for more tutorials on building advanced features with Django Rest Framework!

What do you think about this guide? Let me know in the comments!

Tech With Big D
Tech With Big D

Written by Tech With Big D

Empowering Local Businesses Through Technology