You don't say where your "understanding" comes from, but it's not really accurate. Django itself is pretty agnostic about how it runs - it depends on the server - but it's very unusual for it to be invoked from scratch on each request. About the only method where that's the case is CGI, and it'll run like a dog.
Speaking in very general terms, there are two ways Django can be run. Either it runs inside a process of the web server itself - as with mod_wsgi on Apache - or it runs in a completely separate process and receives requests via reverse proxy from the server, as with uwsgi/gunicorn. Either way, the lifetime of the Django process is not directly connected with the request, but is persistent across many requests. In the case of mod_wsgi for example, the server starts up threads and/or processes (depending on the configuration) and each one lasts for a large number of consecutive requests before being killed and restarted.
For each process, this means that any modules that have been loaded stay in memory for the lifetime of the process. Everything from the middleware onwards is executed once per request, but they wouldn't usually need to be re-imported and run each time.