From ebe959b52a10a88975b15c69275b0ef5c50cb9fa Mon Sep 17 00:00:00 2001 From: Karol Majta Date: Sat, 18 May 2013 16:45:05 +0200 Subject: charset param gets now appended to response's Content-Type. Closes #807 --- rest_framework/views.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'rest_framework/views.py') diff --git a/rest_framework/views.py b/rest_framework/views.py index 555fa2f4..035aa646 100644 --- a/rest_framework/views.py +++ b/rest_framework/views.py @@ -183,7 +183,9 @@ class APIView(View): return conneg.select_renderer(request, renderers, self.format_kwarg) except Exception: if force: - return (renderers[0], renderers[0].media_type) + charset = renderers[0].charset + charset = charset if charset is not None else api_settings.DEFAULT_CHARSET + return (renderers[0], renderers[0].media_type, renderers[0].charset) raise def perform_authentication(self, request): @@ -250,7 +252,10 @@ class APIView(View): # Perform content negotiation and store the accepted info on the request neg = self.perform_content_negotiation(request) - request.accepted_renderer, request.accepted_media_type = neg + renderer, media_type, charset = neg + request.accepted_renderer = renderer + request.accepted_media_type = media_type + request.accepted_charset = charset def finalize_response(self, request, response, *args, **kwargs): """ @@ -265,11 +270,16 @@ class APIView(View): if isinstance(response, Response): if not getattr(request, 'accepted_renderer', None): neg = self.perform_content_negotiation(request, force=True) - request.accepted_renderer, request.accepted_media_type = neg + renderer, media_type, charset = neg + request.accepted_renderer = renderer + request.accepted_media_type = media_type response.accepted_renderer = request.accepted_renderer response.accepted_media_type = request.accepted_media_type response.renderer_context = self.get_renderer_context() + charset = request.accepted_renderer.charset + charset = charset if charset else api_settings.DEFAULT_CHARSET + response.charset = charset for key, value in self.headers.items(): response[key] = value -- cgit v1.2.3