DEV Community

Cover image for How to Build a Task Manager API with Django REST Framework (Step-by-Step Guide)
kihuni
kihuni

Posted on • Edited on

How to Build a Task Manager API with Django REST Framework (Step-by-Step Guide)

Django is a powerful web framework, but when combined with Django REST Framework (DRF), it becomes a go-to tool for building RESTful APIs. Whether you're developing a backend for a mobile app, a React frontend, or simply exploring API development, DRF streamlines the process with its robust features.

This step-by-step tutorial will set up a Task Manager API using Django and DRF. By the end, you’ll have a fully functional Django project with DRF installed, ready to create API endpoints.


Table of Contents

  1. Prerequisites
  2. Step 1: Create a Virtual Environment
  3. Step 2: Install Django and Django REST Framework
  4. Step 3: Start a Django Project
  5. Step 4: Create a Django App for Tasks
  6. Step 5: Configure Django REST Framework
  7. Step 6: Create a Simple Model for Tasks
  8. Conclusion
  9. What’s Next?
  10. Summary Checklist

Prerequisites

Before diving into building your Task Manager API with Django REST Framework, ensure you have:

  • Python 3.8+ installed (download from python.org if needed)
  • Basic knowledge of Python and Django
  • Familiarity with the command line

These essentials will help you follow along smoothly.


Step 1: Create a Virtual Environment

Start by setting up a project folder and a virtual environment to keep dependencies isolated:

# Create a project folder mkdir taskmanager && cd taskmanager # Create a virtual environment python -m venv env # Activate the virtual environment (Windows) venv\Scripts\activate # Activate the virtual environment (Mac/Linux) source env/bin/activate 
Enter fullscreen mode Exit fullscreen mode

Once activated, your terminal will show (env), confirming the virtual environment is active.

command line


Step 2: Install Django and Django REST Framework

Next, install Django and Django REST Framework using pip:

pip install django djangorestframework 
Enter fullscreen mode Exit fullscreen mode

Verify the installation:

python -m django --version 
Enter fullscreen mode Exit fullscreen mode

You’ll see the Django version number if installed correctly.
Django Version Check

django installation

Now, update your INSTALLED_APPS in taskmanager/settings.py to include DRF:

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

Step 3: Start a Django Project

Initialize a new Django project called taskmanager:

django-admin startproject taskmanager . 
Enter fullscreen mode Exit fullscreen mode

The dot (.) ensures the project is created in the current directory.

Your project structure should now look like this:

taskmanager/ │── taskmanager/ # Project settings │── manage.py # Django management script │── env/ # virtual env 
Enter fullscreen mode Exit fullscreen mode

Test the setup by running the server:

python manage.py runserver 
Enter fullscreen mode Exit fullscreen mode

server running

Visit http://127.0.0.1:8000/ in your browser to see Django’s welcome page.

welcome page


Step 4: Create a Django App for Tasks

Django projects are made up of smaller apps. So let’s create an app called tasks:

python manage.py startapp tasks 
Enter fullscreen mode Exit fullscreen mode

Now, the Updated project structure should look like this:

taskmanager/ │── tasks/ # New Django app │── taskmanager/ # Project settings │── manage.py # Django management script │── env/ # virtual env 
Enter fullscreen mode Exit fullscreen mode

Register the app in taskmanager/settings.py:

INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', # Django REST Framework 'tasks', # Register the tasks app ] 
Enter fullscreen mode Exit fullscreen mode

Step 5: Configure Django REST Framework

DRF provides many built-in features like authentication, serialization, and request handling. Add this configuration to taskmanager/settings.py:

REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework.authentication.SessionAuthentication', 'rest_framework.authentication.BasicAuthentication', ), 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.AllowAny', # Change this later for security ), } 
Enter fullscreen mode Exit fullscreen mode

This setup:

  • Enables basic authentication for API requests
  • Allows anyone to access the API (we'll restrict this later)

Step 6: Create a Simple Model for Tasks

Define a Task model in tasks/models.py:

from django.db import models class Task(models.Model): title = models.CharField(max_length=255) description = models.TextField(blank=True, null=True) completed = models.BooleanField(default=False) created_at = models.DateTimeField(auto_now_add=True) def __str__(self): return self.title 
Enter fullscreen mode Exit fullscreen mode

Apply the model to the database:

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

migrations


Conclusion

Congrats! You’ve set up a Django project with Django REST Framework and created a tasks app for your Task Manager API. You’re now ready to build API endpoints!

What’s Next?

What’s Next?

  • In Part 2:, CRUD Operations, you’ll create API endpoints to manage tasks.
  • Next, secure your API with Part 3: Authentication and Permissions.
  • In Part 4: Personalize with User-Owned Tasks.
  • Part 5: Optimizing API Performance.
  • Part 6:Best Practices for Securing APIs.
  • Part 7:API Documentation with OpenAPI and Swagger.

📌 Summary Checklist

  • ✅ Set up a virtual environment
  • ✅Installed Django and DRF
  • ✅Created a Django project and app
  • ✅ Configured DRF in settings.py
  • ✅ Defined a Task model
  • ✅ Ran migrations to apply database changes

💬 Was this guide helpful? Drop a comment below and let me know!😊


Top comments (2)

Collapse
 
medo_fedo_f36efd7c4aaff75 profile image
medo fedo

Where are the completion?

Collapse
 
kihuni profile image
kihuni

Thank you for this. I will compile all the links to the blogs and add them here.