Opened 10 years ago
Closed 10 years ago
#23772 closed Bug (duplicate)
Client().post("/someurl",data="", content_type='text/plain') results in request.body = {}
Description ¶
If you want to access request.body in a handler function to get the raw posted data and the value posted was the empty string "" with a content type of text/plain then what appears in request.body is a string representing an empty dictionary {} due to this line in client.py in the RequestFactory class.
def post(self, path, data=None, content_type=MULTIPART_CONTENT, secure=False, extra):
"Construct a POST request."
post_data = self._encode_data(data or {}, content_type) # <-- Problem line
Here data is replaced with a dictionary before being passed to encoding but what I would expect to end up in request.body is the original empty string for a text/plain request.
if data is then data becomes an empty string.
Duplicate of #23773.