Description of process_response Middleware method incorrect
The Middleware documentation says that if some middleware returns an HttpResponse
object from its process_response()
method, other middleware that follows it in the chain will not be executed. While this is true for the process_request()
and process_view()
methods, it is not true for process_response()
(see relevant code for how request, view, and response middleware is handled). In fact, the process_response()
method must return an HttpResponse
object, as its return value is used as the response
object passed to any other middleware, and eventually rendered as an HTTP response.
I also think it's worth noting in the description of process_response()
that, if present, this method will always be called for every response, even if request middleware that precedes it in the middleware stack short circuits and returns an HttpResponse
.
Since both of these appear to be intentional design decisions I've attached a small documentation patch that addresses both issues.
(In [11048]) Fixed #11322 -- Clarified docs regarding middleware processing. Thanks the Michael Malone for the patch.