MCPcopy
hub / github.com/django/django / load_middleware

Method load_middleware

django/core/handlers/base.py:27–104  ·  view source on GitHub ↗

Populate middleware lists from settings.MIDDLEWARE. Must be called after the environment is fixed (see __call__ in subclasses).

(self, is_async=False)

Source from the content-addressed store, hash-verified

25 _middleware_chain = None
26
27 def load_middleware(self, is_async=False):
28 """
29 Populate middleware lists from settings.MIDDLEWARE.
30
31 Must be called after the environment is fixed (see __call__ in
32 subclasses).
33 """
34 self._view_middleware = []
35 self._template_response_middleware = []
36 self._exception_middleware = []
37
38 get_response = self._get_response_async if is_async else self._get_response
39 handler = convert_exception_to_response(get_response)
40 handler_is_async = is_async
41 for middleware_path in reversed(settings.MIDDLEWARE):
42 middleware = import_string(middleware_path)
43 middleware_can_sync = getattr(middleware, "sync_capable", True)
44 middleware_can_async = getattr(middleware, "async_capable", False)
45 if not middleware_can_sync and not middleware_can_async:
46 raise RuntimeError(
47 "Middleware %s must have at least one of "
48 "sync_capable/async_capable set to True." % middleware_path
49 )
50 elif not handler_is_async and middleware_can_sync:
51 middleware_is_async = False
52 else:
53 middleware_is_async = middleware_can_async
54 try:
55 # Adapt handler, if needed.
56 adapted_handler = self.adapt_method_mode(
57 middleware_is_async,
58 handler,
59 handler_is_async,
60 debug=settings.DEBUG,
61 name="middleware %s" % middleware_path,
62 )
63 mw_instance = middleware(adapted_handler)
64 except MiddlewareNotUsed as exc:
65 if settings.DEBUG:
66 if str(exc):
67 logger.debug("MiddlewareNotUsed(%r): %s", middleware_path, exc)
68 else:
69 logger.debug("MiddlewareNotUsed: %r", middleware_path)
70 continue
71 else:
72 handler = adapted_handler
73
74 if mw_instance is None:
75 raise ImproperlyConfigured(
76 "Middleware factory %s returned None." % middleware_path
77 )
78
79 if hasattr(mw_instance, "process_view"):
80 self._view_middleware.insert(
81 0,
82 self.adapt_method_mode(is_async, mw_instance.process_view),
83 )
84 if hasattr(mw_instance, "process_template_response"):

Callers 4

__init__Method · 0.45
__init__Method · 0.45
__call__Method · 0.45
__call__Method · 0.45

Calls 8

adapt_method_modeMethod · 0.95
import_stringFunction · 0.90
insertMethod · 0.80
middlewareFunction · 0.50
debugMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected