MCPcopy
hub / github.com/django/django / _get_response

Method _get_response

django/core/handlers/base.py:176–228  ·  view source on GitHub ↗

Resolve and call the view, then apply view, exception, and template_response middleware. This method is everything that happens inside the request/response middleware.

(self, request)

Source from the content-addressed store, hash-verified

174 return response
175
176 def _get_response(self, request):
177 """
178 Resolve and call the view, then apply view, exception, and
179 template_response middleware. This method is everything that happens
180 inside the request/response middleware.
181 """
182 response = None
183 callback, callback_args, callback_kwargs = self.resolve_request(request)
184
185 # Apply view middleware
186 for middleware_method in self._view_middleware:
187 response = middleware_method(
188 request, callback, callback_args, callback_kwargs
189 )
190 if response:
191 break
192
193 if response is None:
194 wrapped_callback = self.make_view_atomic(callback)
195 # If it is an asynchronous view, run it in a subthread.
196 if iscoroutinefunction(wrapped_callback):
197 wrapped_callback = async_to_sync(wrapped_callback)
198 try:
199 response = wrapped_callback(request, *callback_args, **callback_kwargs)
200 except Exception as e:
201 response = self.process_exception_by_middleware(e, request)
202 if response is None:
203 raise
204
205 # Complain if the view returned None (a common error).
206 self.check_response(response, callback)
207
208 # If the response supports deferred rendering, apply template
209 # response middleware and then render the response
210 if hasattr(response, "render") and callable(response.render):
211 for middleware_method in self._template_response_middleware:
212 response = middleware_method(request, response)
213 # Complain if the template response middleware returned None
214 # (a common error).
215 self.check_response(
216 response,
217 middleware_method,
218 name="%s.process_template_response"
219 % (middleware_method.__self__.__class__.__name__,),
220 )
221 try:
222 response = response.render()
223 except Exception as e:
224 response = self.process_exception_by_middleware(e, request)
225 if response is None:
226 raise
227
228 return response
229
230 async def _get_response_async(self, request):
231 """

Callers

nothing calls this directly

Calls 6

resolve_requestMethod · 0.95
make_view_atomicMethod · 0.95
check_responseMethod · 0.95
callableFunction · 0.85
renderMethod · 0.45

Tested by

no test coverage detected