summaryrefslogtreecommitdiff
path: root/django/http
diff options
context:
space:
mode:
authorfarhan <farhanalirazaazeemi@gmail.com>2026-01-06 00:34:39 +0500
committerJacob Walls <jacobtylerwalls@gmail.com>2026-02-10 17:59:02 -0500
commit7732f942a98a709750fc1fed2c69741183844a3c (patch)
tree6d290a5577ef26eda941243874eba700540c6495 /django/http
parent56ed37e17e5b1a509aa68a0c797dcff34fcc1366 (diff)
Fixed #36841 -- Made multipart parser class pluggable on HttpRequest.
Diffstat (limited to 'django/http')
-rw-r--r--django/http/request.py18
1 files changed, 17 insertions, 1 deletions
diff --git a/django/http/request.py b/django/http/request.py
index c8adde768d..573ae2b229 100644
--- a/django/http/request.py
+++ b/django/http/request.py
@@ -56,6 +56,7 @@ class HttpRequest:
# The encoding used in GET/POST dicts. None means use default setting.
_encoding = None
_upload_handlers = []
+ _multipart_parser_class = MultiPartParser
def __init__(self):
# WARNING: The `WSGIRequest` subclass doesn't call `super`.
@@ -364,6 +365,19 @@ class HttpRequest:
)
self._upload_handlers = upload_handlers
+ @property
+ def multipart_parser_class(self):
+ return self._multipart_parser_class
+
+ @multipart_parser_class.setter
+ def multipart_parser_class(self, multipart_parser_class):
+ if hasattr(self, "_files"):
+ raise RuntimeError(
+ "You cannot set the multipart parser class after the upload has been "
+ "processed."
+ )
+ self._multipart_parser_class = multipart_parser_class
+
def parse_file_upload(self, META, post_data):
"""Return a tuple of (POST QueryDict, FILES MultiValueDict)."""
self.upload_handlers = ImmutableList(
@@ -373,7 +387,9 @@ class HttpRequest:
"processed."
),
)
- parser = MultiPartParser(META, post_data, self.upload_handlers, self.encoding)
+ parser = self.multipart_parser_class(
+ META, post_data, self.upload_handlers, self.encoding
+ )
return parser.parse()
@property