Django Create Custom Middleware Example
In this tutorial, I will show you how to create a custom django middleware. In this article, we will implement a django custom middleware. This tutorial will give you simple example of create custom middleware django. let’s discuss about how to create custom middleware in django.
Middleware is a framework of hooks into Django’s request/response processing. It’s a light, low-level “plugin” system for globally altering Django’s input or output.
A middleware factory is a callable that takes a get_response callable and returns a middleware. A middleware is a callable that takes a request and returns a response, just like a view.
Here i will give you we will help you to give example of how to create a custom django middleware. So let's see the bellow example:Step 1: Create a Project
In this step, we’ll create a new django project using the django-admin. Head back to your command-line interface and run the following command:
django-admin startproject exampleStep 2: Create an App
Now we'll create a single app called core to store a list of post names. We're keeping things intentionally basic. Stop the local server with Control+c and use the startapp command to create this new app.
cd example django-admin startapp coreStep 3: Update setting.py
Then update INSTALLED_APPS within our settings.py file to notify Django about the app.settings.py
.... INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'core', ] MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'core.middleware.CustomMiddleware' #Add line ]Step 4: Creating the Middleware
In this step, we need to configure create a new middleware file in our core app. open the core/middleware.py file and add.core/middleware.py
class CustomMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): print("custom middleware before next middleware/view") # Code to be executed for each request before # the view (and later middleware) are called. response = self.get_response(request) response.write("<p></p><hr/><div style='color:blue;text-align:center'>Welcome to Tuts-Station.com</div>") # Code to be executed for each response after the view is called print("custom middleware after response or previous middleware") return responseStep 5: Creating the Views
In this step, we need to configure views. open the core/views.py file and add.core/views.py
from django.shortcuts import render # Create your views here. def my_view(request): return render(request, 'home.html')Step 6: Creating the Templates
Next, then with your text editor create new templates files: core/templates/home.html file and the add:core/templates/home.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Home</title> </head> <body> <div class="container" style="text-align: center;"> <h1>Home</h1> <p>Django Custom Middleware Example</p> </div> </body> </html>Step 7: Creating URLs
In this section, we need a urls.py file within the core app however Django doesn't create one for us with the startapp command. Create core/urls.py with your text editor and paste below code.core/urls.py
from django.urls import path from . import views urlpatterns = [ path('home', views.my_view, name='index'), ]
Next, we require to add a URL path for our core app which can be done by importing include and setting a path for it.example/urls.py
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('', include('core.urls')), ]Run the Server
In this step, we’ll run the local development server for playing with our app without deploying it to the web.
python manage.py runserver
Next, go to the http://localhost:8000/home address with a web browser.
I Hope It will help you....