Django Request Response processing

Have you wondered the steps a users request goes through before being responded to by Django? The answer lies in reading django.core.handlers.base and django.core.handlers.wsgi. Here is a diagram explaining what happens. (Click to enlarge.)

The steps are.
(With Apache/Mod_wsgi, similar steps for other setup.)

User’s request comes to Apache etc.

Apache sends request to django.core.handlers.wsgi via mod_wsgi.

A list of request and response middleware callables is created.

Request middleware is applied. If it sends a response, it is returned to the user.

urlresolvers.resolve finds the view funcion to use.

View middleware is applied. If response comes, it is sent back to the user.

View function is called. It talks to models to do business logic, and renders the templates.

The response middleware is applied, and response is sent back to the users.

This misses a lot of important steps (Exception middleware, request_context populating, …) but is a basic high level overview.