POST Method Request in Django Rest Framework (DRF) – Examples

When building a web application, data often needs to be sent from the client-side to the server-side for processing and storage. The HTTP POST method is used to submit data to be processed to a specified resource on the server. In the context of web APIs, the POST method is commonly used to create new resources or perform actions that result in data creation. In this blog, we will explore the POST method in Django Rest Framework (DRF) and provide a practical example to illustrate its usage.

Read our New Blog on How to Combine all API Methods like Get, Post, Put, Delete in One View

The POST Method in Django Rest Framework

In Django Rest Framework, the POST method is used to create new instances of a resource. It allows clients to send data in the request body, and the server processes this data to create a new resource. The POST method is often used in conjunction with HTML forms on the frontend to create new objects on the server or when client applications need to send data to the server for storage or further processing.

DRF provides built-in functionality to handle POST requests and supports serializers for data validation and deserialization, making it easy to create new resources in your API.

Prerequisites:

Before we begin, ensure you have the following prerequisites in place:

  1. Django installed on your system.
  2. Basic familiarity with Django project structure and database concepts.
  3. Virtual Environment, this is optional but recommended. You check our blog here.

Note: For this tutorial, we are using our basic skeleton project for Django. You can also download the project from here.

Sample Django Model and Serializers for Examples

Step 1: Create the Django Model

First, define the Django model that represents a book. In your app’s models.py, add the following code:

from django.db import models

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

Don’t forget to run python manage.py makemigrations and python manage.py migrate to create the corresponding database table for the model.

Step 2: Create the Serializer

Next, create a serializer to convert the book model instances into JSON data and vice versa. In your app’s serializers.py, add the following code:

from rest_framework import serializers
from .models import Book

class BookSerializer(serializers.ModelSerializer):
    class Meta:
        model = Book
        fields = ['id', 'title', 'author', 'publication_date']

1. Creating a Django Rest Framework API with the POST Method Request

Let’s create a simple API to manage a collection of books and demonstrate how the POST method works. For this example, we assume that you already have Django and Django Rest Framework installed in your project.

Step 1: Create the View

Now, create a view to handle POST requests for creating new books. In your app’s views.py, add the following code:

from rest_framework import generics
from .models import Book
from .serializers import BookSerializer

class BookCreateView(generics.CreateAPIView):
    queryset = Book.objects.all()
    serializer_class = BookSerializer

Step 2: Define the URL Pattern

Finally, define a URL pattern to map the view with a URL endpoint. In your project’s urls.py, add the following code:

from django.urls import path
from .views import BookCreateView

urlpatterns = [
    path('api/books/', BookCreateView.as_view(), name='book-create'),
]

Step 3: Test the API with the POST Method

With the API set up, you can now test the POST method to create new books. Use tools like curl or Postman to send a POST request to the URL http://localhost:8000/api/books/ with the book data in the request body.

For example, using curl, you can create a new book with the following command:

curl -X POST -H "Content-Type: application/json" -d '{"title":"Sample Book","author":"John Doe","publication_date":"2023-07-30"}' http://localhost:8000/api/books/

The server will process the data, create a new book with the provided information, and respond with a JSON representation of the newly created book.

Conclusion

In this blog post, we explored the POST method in Django Rest Framework, which is used to create new resources in the API. We walked through a step-by-step example of creating a simple API to manage books, covering model creation, serializer definition, view creation, and URL configuration. DRF’s builtin features make it easy to handle data validation, deserialization, and resource creation, providing a robust foundation for building web applications that can accept and process data sent from the client-side.

Find this tutorial on Github.

Blogs You Might Like to Read!