mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-07 13:54:47 +03:00
Merge 2f5dc0a899
into 4ff9e96b4c
This commit is contained in:
commit
5e72422ef3
|
@ -60,6 +60,9 @@ class JSONParser(BaseParser):
|
||||||
parser_context = parser_context or {}
|
parser_context = parser_context or {}
|
||||||
encoding = parser_context.get('encoding', settings.DEFAULT_CHARSET)
|
encoding = parser_context.get('encoding', settings.DEFAULT_CHARSET)
|
||||||
|
|
||||||
|
if not stream:
|
||||||
|
return {}
|
||||||
|
|
||||||
try:
|
try:
|
||||||
data = stream.read().decode(encoding)
|
data = stream.read().decode(encoding)
|
||||||
return json.loads(data)
|
return json.loads(data)
|
||||||
|
|
|
@ -298,7 +298,7 @@ class Request(object):
|
||||||
return (self._request.POST, self._request.FILES)
|
return (self._request.POST, self._request.FILES)
|
||||||
stream = None
|
stream = None
|
||||||
|
|
||||||
if stream is None or media_type is None:
|
if stream is None and not media_type:
|
||||||
empty_data = QueryDict('', encoding=self._request._encoding)
|
empty_data = QueryDict('', encoding=self._request._encoding)
|
||||||
empty_files = MultiValueDict()
|
empty_files = MultiValueDict()
|
||||||
return (empty_data, empty_files)
|
return (empty_data, empty_files)
|
||||||
|
|
|
@ -13,7 +13,9 @@ from django.utils import six
|
||||||
|
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
from rest_framework.authentication import SessionAuthentication
|
from rest_framework.authentication import SessionAuthentication
|
||||||
from rest_framework.parsers import BaseParser, FormParser, MultiPartParser
|
from rest_framework.parsers import (
|
||||||
|
BaseParser, FormParser, JSONParser, MultiPartParser
|
||||||
|
)
|
||||||
from rest_framework.request import Request
|
from rest_framework.request import Request
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework.test import APIClient, APIRequestFactory
|
from rest_framework.test import APIClient, APIRequestFactory
|
||||||
|
@ -50,6 +52,16 @@ class TestContentParsing(TestCase):
|
||||||
request = Request(factory.head('/'))
|
request = Request(factory.head('/'))
|
||||||
self.assertEqual(request.data, {})
|
self.assertEqual(request.data, {})
|
||||||
|
|
||||||
|
def test_empty_body_yields_empty_dict_for_json_POST(self):
|
||||||
|
"""
|
||||||
|
Ensure request.data returns empty dict for POST request with JSON
|
||||||
|
content type.
|
||||||
|
"""
|
||||||
|
request = Request(factory.post('/', CONTENT_TYPE='application/json'))
|
||||||
|
request.parsers = (JSONParser(),)
|
||||||
|
self.assertEquals(type(request.data), dict)
|
||||||
|
self.assertEquals(request.data, {})
|
||||||
|
|
||||||
def test_request_DATA_with_form_content(self):
|
def test_request_DATA_with_form_content(self):
|
||||||
"""
|
"""
|
||||||
Ensure request.data returns content for POST request with form content.
|
Ensure request.data returns content for POST request with form content.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user