Creating a custom middleware
You already know the MIDDLEWARE
setting, which contains the middleware 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.
You should avoid adding expensive processing to middleware since they are executed in every single request.
Figure 17.15 shows the middleware execution in Django:
Figure 17.15: Middleware execution in Django
When an HTTP request is received, middleware is executed in order of appearance in the MIDDLEWARE
setting. When an HTTP response has been generated by Django, the response passes through all middleware back in reverse order.
Figure 17.16 shows the execution order of the middleware components included in the MIDDLEWARE
setting when creating a project with the startproject
management...