aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/response.py
diff options
context:
space:
mode:
authorTom Christie2013-05-18 17:21:43 +0100
committerTom Christie2013-05-18 17:21:43 +0100
commit0d3d66cb0232e1067600ef22fcf88937ac6bee9d (patch)
treee39f1750d919026607ba2d99610207e5fecb2e37 /rest_framework/response.py
parent5bebd29f11dd9268b9a23c27cf58c8440664f5e9 (diff)
downloaddjango-rest-framework-0d3d66cb0232e1067600ef22fcf88937ac6bee9d.tar.bz2
Added proper charset support
Diffstat (limited to 'rest_framework/response.py')
-rw-r--r--rest_framework/response.py18
1 files changed, 11 insertions, 7 deletions
diff --git a/rest_framework/response.py b/rest_framework/response.py
index 40372f22..32e74a45 100644
--- a/rest_framework/response.py
+++ b/rest_framework/response.py
@@ -18,7 +18,7 @@ class Response(SimpleTemplateResponse):
def __init__(self, data=None, status=200,
template_name=None, headers=None,
- exception=False):
+ exception=False, charset=None):
"""
Alters the init arguments slightly.
For example, drop 'template_name', and instead use 'data'.
@@ -30,6 +30,7 @@ class Response(SimpleTemplateResponse):
self.data = data
self.template_name = template_name
self.exception = exception
+ self.charset = charset
if headers:
for name, value in six.iteritems(headers):
@@ -39,18 +40,21 @@ class Response(SimpleTemplateResponse):
def rendered_content(self):
renderer = getattr(self, 'accepted_renderer', None)
media_type = getattr(self, 'accepted_media_type', None)
- charset = getattr(self, 'charset', None)
context = getattr(self, 'renderer_context', None)
assert renderer, ".accepted_renderer not set on Response"
assert media_type, ".accepted_media_type not set on Response"
assert context, ".renderer_context not set on Response"
context['response'] = self
- if charset is not None:
- ct = "{0}; charset={1}".format(media_type, charset)
+
+ if self.charset is None:
+ self.charset = renderer.charset
+
+ if self.charset is not None:
+ content_type = "{0}; charset={1}".format(media_type, self.charset)
else:
- ct = media_type
- self['Content-Type'] = ct
+ content_type = media_type
+ self['Content-Type'] = content_type
return renderer.render(self.data, media_type, context)
@property
@@ -71,4 +75,4 @@ class Response(SimpleTemplateResponse):
for key in ('accepted_renderer', 'renderer_context', 'data'):
if key in state:
del state[key]
- return state \ No newline at end of file
+ return state