Creating a custom middleware

You already know the MIDDLEWARE setting, which contains the middlewares for your project. You can think of it as a low-level plugin system, allowing you to implement hooks that get executed in the request/response process. Each middleware is responsible for some specific action that will be executed for all HTTP requests or responses.

Avoid adding expensive processing to middlewares, since they are executed in every single request.

When an HTTP request is received, middlewares are executed in order of appearance in the MIDDLEWARE setting. When an HTTP response has been generated by Django, the response passes through all middlewares back in reverse order.

A middleware can be written as a function as follows:

Get Django 2 by Example now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.