From 57d3545b7b764c3453b8e9ea6f0ee44f8ecb72d7 Mon Sep 17 00:00:00 2001 From: roboslone Date: Mon, 26 Dec 2016 11:55:07 +0300 Subject: [PATCH 1/4] fixed typos --- requirements.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index 0b41cd50b..b4e5ff579 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,8 +2,8 @@ # just Django, but for the purposes of development and testing # there are a number of packages that are useful to install. -# Laying these out as seperate requirements files, allows us to -# only included the relevent sets when running tox, and ensures +# Laying these out as separate requirements files, allows us to +# only included the relevant sets when running tox, and ensures # we are only ever declaring our dependencies in one place. -r requirements/requirements-optionals.txt From 44d69a1a718ae13be0f11c4845e20707ff4c1930 Mon Sep 17 00:00:00 2001 From: roboslone Date: Mon, 26 Dec 2016 12:08:07 +0300 Subject: [PATCH 2/4] added REMOVE_CONTENT_TYPE_ON_HTTP_204 setting --- rest_framework/settings.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rest_framework/settings.py b/rest_framework/settings.py index 6d9ed2355..d1ba49326 100644 --- a/rest_framework/settings.py +++ b/rest_framework/settings.py @@ -106,6 +106,8 @@ DEFAULTS = { 'TIME_FORMAT': ISO_8601, 'TIME_INPUT_FORMATS': (ISO_8601,), + 'REMOVE_CONTENT_TYPE_ON_HTTP_204': True, + # Encoding 'UNICODE_JSON': True, 'COMPACT_JSON': True, From 931b6cb7e0d3793699388727ba58cfae87b6c3ef Mon Sep 17 00:00:00 2001 From: roboslone Date: Mon, 26 Dec 2016 12:08:45 +0300 Subject: [PATCH 3/4] check api_settings.REMOVE_CONTENT_TYPE_ON_HTTP_204 before removing 'Content-Type' header --- rest_framework/response.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rest_framework/response.py b/rest_framework/response.py index cb0f290ce..98a3cf3c4 100644 --- a/rest_framework/response.py +++ b/rest_framework/response.py @@ -11,6 +11,7 @@ from django.utils import six from django.utils.six.moves.http_client import responses from rest_framework.serializers import Serializer +from rest_framework.settings import api_settings class Response(SimpleTemplateResponse): @@ -77,7 +78,7 @@ class Response(SimpleTemplateResponse): ) return bytes(ret.encode(charset)) - if not ret: + if api_settings.REMOVE_CONTENT_TYPE_ON_HTTP_204 and not ret: del self['Content-Type'] return ret From 60585ac2819eb188584ba8bee81dcef335b045a5 Mon Sep 17 00:00:00 2001 From: roboslone Date: Mon, 26 Dec 2016 12:09:12 +0300 Subject: [PATCH 4/4] use request's content-type as response's if there's no content --- rest_framework/mixins.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework/mixins.py b/rest_framework/mixins.py index f3695e665..9739a108a 100644 --- a/rest_framework/mixins.py +++ b/rest_framework/mixins.py @@ -91,7 +91,7 @@ class DestroyModelMixin(object): def destroy(self, request, *args, **kwargs): instance = self.get_object() self.perform_destroy(instance) - return Response(status=status.HTTP_204_NO_CONTENT) + return Response(status=status.HTTP_204_NO_CONTENT, content_type=request.content_type) def perform_destroy(self, instance): instance.delete()