I try to test a view, I receive a json request from the IPad, the format is:
req = {"custom_decks": [
{
"deck_name": "deck_test",
"updates_last_applied": "1406217357",
"created_date": 1406217380,
"slide_section_ids": [
1
],
"deck_id": 1
}
],
"custom_decks_to_delete": []
}
I checked this in jsonlint and it passed.
I post the req via:
response = self.client.post('/library/api/6.0/user/'+ uuid +
'/store_custom_dec/',content_type='application/json', data=req)
The view return "creation_success": false
The problem is the post method in view doesn't find the key custom_decks.
QueryDict: {u'{"custom_decks": [{"deck_id": 1, "slide_section_ids": [1],
"created_date":1406217380, "deck_name": "deck_test"}],
"custom_decks_to_delete": []}': [u'']}>
The problem is the post method in view doesn't find the key custom_decks. Because it is converting my dict to QueryDict with one key.
I appreciate all helps.
Thanks
python 3.6
anddjango 2.0
:json.loads(s, *, encoding=None,...)
From
python 3.6
NO needrequest.body.decode('utf-8')
.Since HttpRequest has a read() method loading JSON from request is actually as simple as:
If you put this up as a view, you can test it and it'll echo any JSON you send back to you.
As I was having problems with getting JSON data from HttpRequest directly with the code of the other answer:
error:
Here is an update of the other answer for Python version >3:
Regarding decode('utf-8'), as mention in:
RFC 4627:
I attached the Python link referred to this specific problem for version >3.
http://bugs.python.org/issue10976
You're posting JSON, which is not the same as form-encoded data. You need to get the value of
request.body
and deserialize it: