Building REST APIs Using Django REST Framework: 3 Easy Steps

on API, Data Driven Strategies, Data Engineering, Data Integration, Django, ETL, ETL Tutorials, Python, REST API • October 25th, 2021 • Write for Hevo

Django REST Framework - Featured Image

Django is a Python Web Framework that promotes rapid development with simplistic design. It’s built by professional Developers to take care of challenges faced in web development so that you can concentrate on developing your app instead of reinventing the wheel. Since the Framework’s inception a decade ago, Django’s stability, performance, and community have all skyrocketed.

As a Developer, you might have come across the REST (Representational State Transfer)  and Django REST Framework in Django. If not, then you are at the right spot. This article will guide you more about these frameworks. REST is a generic Framework, but the Django REST Framework is a Django-specific REST Framework. Because of its modular and flexible architecture, Django REST Framework makes it simple to create Web APIs.

In this article, you will learn about Django and why Developers love it so much. You will gain a basic understanding of REST APIs and learn in-depth about Django REST Framework. Moreover, you will understand the key steps to build a Django REST API using Django REST Framework. So, put on your reading glasses and read along to gain insights about Django REST Framework.

Table of Contents

Prerequisites

Before proceeding ahead to create Django REST APIs using Django REST Framework, you need to meet the following requirements:

  • Python3 or higher version.
  • Django 2.2 or above version.

Introduction to Django

Django REST Framework - Django Logo
Image Source

Django is a free and open-source Python Web Framework that leverages the Model–Template–Views architectural paradigm. The Django Software Foundation, a non-profit organization based in the United States, is responsible for its maintenance. Django allows you to quickly and easily create a high-quality Web application. It is appropriate for both frontend and backend development.

Django adheres to strong design principles throughout its code and makes it simple to adopt top web-development techniques. Some of the well-known platforms that use Django are Instagram, Disqus, Washington Times, Bitbucket, and Mozilla. This Framework acts as a connector between the Data Model and the Database Engine, and it supports a wide range of databases. Django’s philosophy is to do everything possible to make hyper-fast development possible.

Key Features of Django

Django is a high-level Python Web Framework for building secure and reliable websites quickly. Let’s look at some of the features of Django, that make it a popular choice among Python Developers:

  • Secure: Django has been designed to automatically “Do the Right Things” in order to protect the website. Django avoids common pitfalls like storing session information in cookies, which is vulnerable. SQL injection, cross-site scripting, cross-site request forgery, and clickjacking are all vulnerabilities that Django protects against by default.
  • Scalable: Django employs a “Shared-Nothing” architecture i.e each part of the architecture is independent of the others.  Since the various components are clearly separated, it can scale to accommodate additional demand by adding hardware at any level.
  • Maintainable: Django code is constructed with design principles and patterns in mind, resulting in code that is easy to maintain and reuse. It employs the “Don’t Repeat Yourself” (DRY) concept to eliminate needless repetition and hence reduce the amount of code. 
  • Versatile: From content management systems and wikis to social networks and news sites, Django can be used to create practically any kind of website. It can integrate with any client-side framework and serve information in nearly any format (including HTML, RSS feeds, JSON, XML, etc).
  • Portable: Django is written in Python, a programming language that runs on a variety of platforms. That means you’re not locked into a single server platform and can run your apps on a variety of operating systems such as Linux, Windows, and Mac OS X. Django is also well-supported by a large number of web hosting companies, who often provide dedicated infrastructure and documentation for hosting Django sites.

To explore more about Django, visit the homepage here.

Introduction to REST APIs

Django REST Framework - REST API Logo
Image Source

REST APIs is an acronym for Representational State Transfer Application Programming Interface. A REST API is a frontend for a data source that lets users create, retrieve, update, and remove data items. For Developer teams, an API is often a gateway to the rest of the world. In a typical 3-tier application, it stands between the User Interface (which allows end-users to access and alter data), and the Database (which stores the data). 

Django REST Framework - REST API working
Image Source

A REST API is a set of protocols that govern how different apps communicate via HTTP. There are 4 basic methods, which are also referred to as CRUD operations: 

  • POST: Create
  • GET: Read
  • PUT: Update
  • DELETE: Delete

These CRUD methods are used to access and utilize data in an HTTP request. As these components are loosely coupled, information flows quickly and efficiently. It can also be used for a wider range of purposes and is easier to design because the data formats aren’t pre-defined. As a result, REST APIs have become the industry standard for web-based APIs and are a popular choice among Web Developers.

Introduction to Django REST Framework

Django REST Framework
Image Source

Django REST Framework (DRF) is a Python application that allows you to quickly create RESTful APIs using Django models. It has various capabilities to assist Developers in creating capable web applications, such as data views and Model-View-Controller (MVC) patterns, forms, templates, database management, caching, security, and so on, in addition to HTTP and application middleware. Django can be installed using Python’s pip package management with only a single command.

Django REST Framework - Django REST API examples
Image Source

The following are some reasons why you might want to use the Django REST framework:

  • For your Developers, the Web browsable API is a major victory in terms of usability.
  • Authentication policies, including OAuth1a and OAuth2 packages.
  • ORM and non-ORM data sources are supported through Serialization.
  • Customizable with extensive documentation and community support.
  • Mozilla, Red Hat, Heroku, and Eventbrite are just a few of the well-known enterprises that use and trust it.

Visit the Django REST Framework HomePage to learn more about Django REST Frameworks.

Simplify ETL and REST APIs with Hevo’s No-code Data Pipeline

Hevo Data, a No-code Data Pipeline, helps load data from any data source such as Databases, SaaS applications, Cloud Storage, SDK,s, and Streaming Services and simplifies the ETL process. It supports 100+ Data Sources including 40+ Free Sources. Hevo loads the data onto the desired Data Warehouse/destination and enriches the data and transforms it into an analysis-ready form without having to write a single line of code. Hevo supports robust and native connectors for REST APIs to help you unify data with ease.

Hevo’s fault-tolerant and scalable architecture ensures that the data is handled in a secure, consistent manner with zero data loss and supports different forms of data. Hevo allows you to bring data from various Sources through its native connectors. However, for situations where you need to bring data from multiple different applications or from an in-house REST API, you can use the REST API Source.

GET STARTED WITH HEVO FOR FREE

Check out why Hevo is the Best:

  • Secure: Hevo has a fault-tolerant architecture that ensures that the data is handled securely and consistently with zero data loss.
  • Schema Management: Hevo takes away the tedious task of schema management & automatically detects the schema of incoming data and maps it to the destination schema.
  • Minimal Learning: Hevo, with its simple and interactive UI, is extremely simple for new customers to work on and perform operations.
  • Hevo Is Built To Scale: As the number of sources and the volume of your data grows, Hevo scales horizontally, handling millions of records per minute with very little latency.
  • Incremental Data Load: Hevo allows the transfer of data that has been modified in real-time. This ensures efficient utilization of bandwidth on both ends.
  • Live Support: The Hevo team is available round the clock to extend exceptional support to its customers through chat, email, and support calls.
  • Live Monitoring: Hevo allows you to monitor the data flow and check where your data is at a particular point in time.

Simplify your ETL with Hevo today! 

SIGN UP HERE FOR A 14-DAY FREE TRIAL!

Steps to Create a REST API using Django REST Framework

The Django REST Framework is a wrapper for the standard Django Framework that is used to develop multiple APIs.  Let’s dive deep and understand how to build a REST API using Django REST Framework.

Step 1: Install Django REST Framework

The first step includes the installation of the Django REST Framework. You can install Django REST Framework by any of the following methods mentioned below.

1) Using pip command

Enter the following command in your Python IDE command-line interface:

pip install djangorestframework
pip install markdown       # Markdown support for the browsable API.
pip install django-filter  # Filtering support

2) By cloning project from GitHub

Enter the following command in your Python IDE command-line interface:

git clone https://github.com/encode/django-rest-framework

The next step is to add “rest_framework” to your “INSTALLED_APPS” setting as shown below.

INSTALLED_APPS = [
    ...
    'rest_framework',
]

If you’re intending to use the browsable API you’ll probably also want to add the REST framework’s login and logout views. To your root urls.py file, add the following code. It’s worth noting that the URL route can be anything you desire.

urlpatterns = [
    ...
    path('api-auth/', include('rest_framework.urls'))
]

Step 2: Create REST API

In this step, you will build a simple model-backed API using Django REST Framework. You will develop a simple read-write API to obtain information about your project’s users. Follow the steps below:

  • Open your settings.py module and add the following commands to create a REST_FRAMEWORK dictionary. It will store all the global settings for a REST framework API in a single configuration dictionary.
REST_FRAMEWORK = {
    # Use Django's standard `django.contrib.auth` permissions,
    # or allow read-only access for unauthenticated users.
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
    ]
}
  • Next in your project’s root urls.py module, enter the following code to create your API.
from django.urls import path, include
from django.contrib.auth.models import User
from rest_framework import routers, serializers, viewsets

# Serializers define the API representation.
class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ['url', 'username', 'email', 'is_staff']

# ViewSets define the view behavior.
class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer

# Routers provide an easy way of automatically determine the URL configuration.
router = routers.DefaultRouter()
router.register(r'users', UserViewSet)

# Wire up your API using automatic URL routing.
# Additionally, you can include login URLs for the browsable API.
urlpatterns = [
    path('', include(router.urls)),
    path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]

In the above code, there are certain terms you need to be aware of. These have been discussed below in brief.

  • Serialization: Serializers enable complex data, such as querysets and model instances, to be transformed to native Python datatypes, which can subsequently be translated into JSON, XML, and other content types with ease. After validating the incoming data, serializers also enable deserialization, which allows parsed data to be transformed back into complex types. data to be converted back into complex types, after first validating the incoming data.
  • ViewSet: The REST framework contains an abstraction for dealing with ViewSets, which allows the Developer to focus on modeling the API’s state and interactions while the URL building is handled automatically based on industry standards. ViewSet classes are nearly identical to View classes, with the exception that they include actions like retrieve and update rather than method handlers like get and put. When a ViewSet class is instantiated into a set of views, it is only bound to a set of method handlers at the last minute, often by utilizing a Router class, which handles the complexity of establishing the URL conf for you.
  • URLs of API: In the above code you are using ViewSets instead of views, hence you can automatically generate the URL conf for your API, by simply registering the ViewSets with a router class. If you need more control over the API URLs, just use standard class-based views and explicitly write the URL conf. You’ve also supplied default login and logout views for use with the browsable API in this example, which is optional.

Step 3: Test REST API

After entering and saving your code, you can now test your REST API created using Django REST Framework. To test, open the API in your browser at http://127.0.0.1:8000/, and view your new ‘users’ API. You can also add, create, and delete users from the system by using the login control in the top right corner.

Felicitations!! You have successfully created and tested your REST API created using Django REST Framework. 

To read about building REST APIs using Django REST Framework in detail, you can refer to the Quickstart guide. 

Conclusion

In this article, you gained an in-depth understanding of the Django REST Framework. You explored the key features of Django and learned the steps to build REST APIs using Django REST Framework. Django REST Framework is a powerful and flexible toolkit for building Web APIs. 

Moreover, extracting complex data from a diverse set of data sources such as Databases, SaaS applications, Cloud Storage, SDK,s, and Streaming Services can be quite challenging and cumbersome, however, a simpler alternative like Hevo can save your day! 

Hevo Data is a No-Code Data Pipeline that offers a faster way to move data from 100+ Data Sources including 40+ Free Sources, into your Data Warehouse to be visualized in a BI tool. Hevo is fully automated and hence does not require you to code. It supports robust and native connectors for REST APIs to help you unify data with ease.

VISIT OUR WEBSITE TO EXPLORE HEVO

Want to take Hevo for a spin?

SIGN UP and experience the feature-rich Hevo suite first hand. You can also have a look at the unbeatable pricing that will help you choose the right plan for your business needs.

Share your experience with building REST APIs using Django REST Framework in the comments section below!

No-Code Data Pipeline For Your Data Warehouse