diff options
Diffstat (limited to 'rest_framework/views.py')
| -rw-r--r-- | rest_framework/views.py | 16 | 
1 files changed, 13 insertions, 3 deletions
| 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 | 
