Returns the final response object.
(self, request, response, *args, **kwargs)
| 422 | self.check_throttles(request) |
| 423 | |
| 424 | def finalize_response(self, request, response, *args, **kwargs): |
| 425 | """ |
| 426 | Returns the final response object. |
| 427 | """ |
| 428 | # Make the error obvious if a proper response is not returned |
| 429 | assert isinstance(response, HttpResponseBase), ( |
| 430 | 'Expected a `Response`, `HttpResponse` or `StreamingHttpResponse` ' |
| 431 | 'to be returned from the view, but received a `%s`' |
| 432 | % type(response) |
| 433 | ) |
| 434 | |
| 435 | if isinstance(response, Response): |
| 436 | if not getattr(request, 'accepted_renderer', None): |
| 437 | neg = self.perform_content_negotiation(request, force=True) |
| 438 | request.accepted_renderer, request.accepted_media_type = neg |
| 439 | |
| 440 | response.accepted_renderer = request.accepted_renderer |
| 441 | response.accepted_media_type = request.accepted_media_type |
| 442 | response.renderer_context = self.get_renderer_context() |
| 443 | |
| 444 | # Add new vary headers to the response instead of overwriting. |
| 445 | vary_headers = self.headers.pop('Vary', None) |
| 446 | if vary_headers is not None: |
| 447 | patch_vary_headers(response, cc_delim_re.split(vary_headers)) |
| 448 | |
| 449 | for key, value in self.headers.items(): |
| 450 | response[key] = value |
| 451 | |
| 452 | return response |
| 453 | |
| 454 | def handle_exception(self, exc): |
| 455 | """ |
no test coverage detected