Omonbude Emmanuel
Software Engineer
  • Residence:
    Nigeria
  • Phone:
    +2349032841265
  • Email:
    budescode@gmail.com
HTML/CSS/JAVASCRIPT
PYTHON
DJANGO/DJANGO REST FRAMEWORK
NODE JS
DOCKER, AWS, KUBERNATES
FIREBASE, PostgreSQL, MySQL,Mongo DB
FLUTTER
DART
ANGULAR
TYPESCRIPT

Introduction to django rest framework

Omonbude Emmanuel | May 11, 2023, 12:45 p.m.

182

Introduction to Django REST Framework

Django is a popular and powerful web framework that enables developers to build robust and scalable web applications quickly. However, building APIs (Application Programming Interfaces) requires a different set of tools and techniques. This is where Django Rest Framework (DRF) comes in for building Web APIs that integrates seamlessly with Django.
Django REST Framework (DRF) is a powerful and flexible toolkit for building Web APIs in Django. It offers a wide range of features that make it easier to build robust and maintainable APIs, leveraging the full potential of Django. In this blog, we'll explore what DRF is, its key features, and how to get started with it.

What is Django REST Framework?

Django REST Framework is a library that allows you to create Rest APIs quickly and efficiently using Django. It provides tools and functionalities to handle common API tasks such as serialization, authentication, and routing, which can significantly reduce the amount of code you need to write.

Why Use Django REST Framework?

  • Simplicity and Flexibility

    DRF simplifies the process of building APIs, providing a clean and reusable interface. It is also highly flexible, allowing you to customize and extend your API to suit your specific needs.

  • Browsable API

    One of the standout features of DRF is the browsable API, which offers a web interface to interact with your API via your browser. This is particularly useful for testing and debugging.

  • Serialization
    DRF includes powerful serialization tools to convert complex data types, such as Django models, into JSON, XML, or other content types, making it easier to work with data in your APIs.

  • Authentication and Permissions
    DRF comes with built-in support for various authentication schemes and permission policies, ensuring that your API is secure and accessible only to authorized users.

  • Viewsets and Routers
    DRF introduces viewsets and routers to simplify the creation of RESTful APIs. Viewsets reduce code duplication by handling standard CRUD operations, while routers automatically generate URL patterns for your API.
     

Getting Started with Django REST Framework

1. Installation

To get started with DRF, you first need to install it along with Django. You can do this using pip:

 

pip install django djangorestframework

 

Setting Up the Project

Create a new Django project and app:

 

django-admin startproject myproject
cd myproject
python manage.py startapp myapp

 

Add rest_framework to your INSTALLED_APPS in settings.py:  

INSTALLED_APPS = [ ... 'rest_framework', 'myapp' ]

Creating a Simple API

Let's create a simple API for a model called Book.
 

In your models.py file, define the Book model:

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=100)
    published_date = models.DateField()

    def __str__(self):
        return self.title
 

Create a Serializer file called serializers.py

In serializers.py, create a serializer for the Book model:

 

from rest_framework import serializers
from .models import Book

class BookSerializer(serializers.ModelSerializer):
    class Meta:
        model = Book
        fields = '__all__'

 

 

Create a function based view

In views.py, create a function to handle our requests

 

from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response
from .models import Book
from .serializers import BookSerializer

@api_view(['GET', 'POST'])
def book_list(request):
    if request.method == 'GET':
        books = Book.objects.all()
        serializer = BookSerializer(books, many=True)
        return Response(serializer.data)
    
    elif request.method == 'POST':
        serializer = BookSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

@api_view(['GET', 'PUT', 'DELETE'])
def book_detail(request, pk):
    try:
        book = Book.objects.get(pk=pk)
    except Book.DoesNotExist:
        return Response(status=status.HTTP_404_NOT_FOUND)

    if request.method == 'GET':
        serializer = BookSerializer(book)
        return Response(serializer.data)
    
    elif request.method == 'PUT':
        serializer = BookSerializer(book, data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
    
    elif request.method == 'DELETE':
        book.delete()
        return Response(status=status.HTTP_204_NO_CONTENT)
 

 

Configure URLs


In myapp/urls.py, configure the URLs for the API endpoints:

from django.urls import path
from . import views

urlpatterns = [
    path('books/', views.book_list, name='book_list'),
    path('books/<int:pk>/', views.book_detail, name='book_detail'),
] 

 

Include these URLs in your 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('myapp.urls')),
]

 

Testing the API


Run the Django development server:

python manage.py runserver

Navigate to http://127.0.0.1:8000/api/books/ in your web browser to interact with the API. You can use the browsable API interface to view, create, update, and delete books.

Conclusion


Django REST Framework makes it straightforward to build robust APIs with Django, and its support for function-based and class based views allows for explicit control over request handling. By following the steps outlined above, you can quickly set up a simple API and start leveraging the power and flexibility of DRF. Whether you're building a small project or a complex application, DRF provides the tools and features needed to develop scalable and maintainable APIs efficiently.

 

© 2024 Omonbude Emmanuel

Omonbude Emmanuel