Skip to content

Commit 101fd29

Browse files
authored
Do not include uploads in request.POST (#4407)
1 parent 785b206 commit 101fd29

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

rest_framework/request.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,7 @@ def POST(self):
373373
if not _hasattr(self, '_data'):
374374
self._load_data_and_files()
375375
if is_form_media_type(self.content_type):
376-
return self.data
376+
return self._data
377377
return QueryDict('', encoding=self._request._encoding)
378378

379379
@property

tests/test_request.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from django.contrib.auth import authenticate, login, logout
88
from django.contrib.auth.models import User
99
from django.contrib.sessions.middleware import SessionMiddleware
10+
from django.core.files.uploadedfile import SimpleUploadedFile
1011
from django.test import TestCase, override_settings
1112
from django.utils import six
1213

@@ -78,6 +79,16 @@ def test_request_POST_with_form_content(self):
7879
request.parsers = (FormParser(), MultiPartParser())
7980
self.assertEqual(list(request.POST.items()), list(data.items()))
8081

82+
def test_request_POST_with_files(self):
83+
"""
84+
Ensure request.POST returns no content for POST request with file content.
85+
"""
86+
upload = SimpleUploadedFile("file.txt", b"file_content")
87+
request = Request(factory.post('/', {'upload': upload}))
88+
request.parsers = (FormParser(), MultiPartParser())
89+
self.assertEqual(list(request.POST.keys()), [])
90+
self.assertEqual(list(request.FILES.keys()), ['upload'])
91+
8192
def test_standard_behaviour_determines_form_content_PUT(self):
8293
"""
8394
Ensure request.data returns content for PUT request with form content.

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy