Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions example/tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,7 @@ def test_post_to_many_relationship_with_no_change(self):
}
response = self.client.post(url, data=json.dumps(request_data), content_type='application/vnd.api+json')
assert response.status_code == 204, response.content.decode()
assert len(response.rendered_content) == 0, response.rendered_content.decode()

def test_post_to_many_relationship_with_change(self):
url = '/entries/{}/relationships/comment_set'.format(self.first_entry.id)
Expand Down Expand Up @@ -207,6 +208,7 @@ def test_delete_to_many_relationship_with_no_change(self):
}
response = self.client.delete(url, data=json.dumps(request_data), content_type='application/vnd.api+json')
assert response.status_code == 204, response.content.decode()
assert len(response.rendered_content) == 0, response.rendered_content.decode()

def test_delete_one_to_many_relationship_with_not_null_constraint(self):
url = '/entries/{}/relationships/comment_set'.format(self.first_entry.id)
Expand Down Expand Up @@ -253,3 +255,15 @@ def _get_create_response(self, data, view):
user = self.create_user('user', 'pass')
force_authenticate(request, user)
return view(request)


class TestModelViewSet(TestBase):
def setUp(self):
self.author = Author.objects.create(name='Super powerful superhero', email='i.am@lost.com')
self.blog = Blog.objects.create(name='Some Blog', tagline="It's a blog")

def test_no_content_response(self):
url = '/blogs/{}'.format(self.blog.pk)
response = self.client.delete(url)
assert response.status_code == 204, response.rendered_content.decode()
assert len(response.rendered_content) == 0, response.rendered_content.decode()
8 changes: 8 additions & 0 deletions rest_framework_json_api/renderers.py
Original file line number Diff line number Diff line change
Expand Up @@ -426,6 +426,14 @@ def render(self, data, accepted_media_type=None, renderer_context=None):
if resource_name == 'errors':
return self.render_errors(data, accepted_media_type, renderer_context)

# if response.status_code is 204 then the data to be rendered must
# be None
response = renderer_context.get('response', None)
if response is not None and response.status_code == 204:
return super(JSONRenderer, self).render(
None, accepted_media_type, renderer_context
)

from rest_framework_json_api.views import RelationshipView
if isinstance(view, RelationshipView):
return self.render_relationship_view(data, accepted_media_type, renderer_context)
Expand Down