@@ -150,6 +150,8 @@ def _encode_data(self, data, format=None, content_type=None):
150150 """
151151 Encode the data returning a two tuple of (bytes, content_type)
152152 """
153+ if data is None :
154+ return (b'' , content_type )
153155
154156 assert format is None or content_type is None , (
155157 'You may not set both `format` and `content_type`.'
@@ -161,9 +163,6 @@ def _encode_data(self, data, format=None, content_type=None):
161163 except AttributeError :
162164 pass
163165
164- if data is None :
165- data = ''
166-
167166 # Content type specified explicitly, treat data as a raw bytestring
168167 ret = force_bytes (data , settings .DEFAULT_CHARSET )
169168
@@ -181,6 +180,7 @@ def _encode_data(self, data, format=None, content_type=None):
181180
182181 # Use format and render the data into a bytestring
183182 renderer = self .renderer_classes [format ]()
183+ ret = renderer .render (data )
184184
185185 # Determine the content-type header from the renderer
186186 content_type = renderer .media_type
@@ -189,14 +189,9 @@ def _encode_data(self, data, format=None, content_type=None):
189189 content_type , renderer .charset
190190 )
191191
192- if data is None :
193- ret = ''
194- else :
195- ret = renderer .render (data )
196-
197- # Coerce text to bytes if required.
198- if isinstance (ret , str ) and renderer .charset :
199- ret = ret .encode (renderer .charset )
192+ # Coerce text to bytes if required.
193+ if isinstance (ret , str ):
194+ ret = ret .encode (renderer .charset )
200195
201196 return ret , content_type
202197
0 commit comments