aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/views.py
diff options
context:
space:
mode:
authorKarol Majta2013-05-18 16:45:05 +0200
committerKarol Majta2013-05-18 16:45:05 +0200
commitebe959b52a10a88975b15c69275b0ef5c50cb9fa (patch)
treed54eab80e5238b1b6312cdd3916a1f90522ab8c4 /rest_framework/views.py
parentb950b025bc66e3018d5f74e1494ff17f7742be75 (diff)
downloaddjango-rest-framework-ebe959b52a10a88975b15c69275b0ef5c50cb9fa.tar.bz2
charset param gets now appended to response's Content-Type. Closes #807
Diffstat (limited to 'rest_framework/views.py')
-rw-r--r--rest_framework/views.py16
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