Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正在尝试从Django中的POST解析'request.body'_Python_Json_Django_Python 3.x_Backbone.js - Fatal编程技术网

Python 正在尝试从Django中的POST解析'request.body'

Python 正在尝试从Django中的POST解析'request.body',python,json,django,python-3.x,backbone.js,Python,Json,Django,Python 3.x,Backbone.js,出于某种原因,我无法理解Django为什么没有正确处理我的请求.body内容 它是以JSON格式发送的,查看Dev Tools中的Network选项卡,它显示为请求负载: {creator: "creatorname", content: "postcontent", date: "04/21/2015"} 这正是我希望它被发送到API的方式 在Django中,我有一个视图接受此请求作为参数,并且仅出于测试目的,应该将request.body[“content”]打印到控制台 当然,没有打印任

出于某种原因,我无法理解Django为什么没有正确处理我的
请求.body
内容

它是以
JSON
格式发送的,查看Dev Tools中的
Network
选项卡,它显示为请求负载:

{creator: "creatorname", content: "postcontent", date: "04/21/2015"}
这正是我希望它被发送到API的方式

在Django中,我有一个视图接受此请求作为参数,并且仅出于测试目的,应该将
request.body[“content”]
打印到控制台

当然,没有打印任何内容,但是当我打印
request.body
时,我得到以下信息:

b'{"creator":"creatorname","content":"postcontent","date":"04/21/2015"}'
所以我知道我确实有一具尸体被送去了


我尝试使用
json=json.loads(request.body)
也没有用。设置该变量后打印
json
也不会返回任何结果。

在Python 3.0到Python 3.5.x中,
json.loads()
将只接受unicode字符串,因此在将其传递到
json.loads()
之前必须对
请求.body
(一个字节字符串)进行解码


在Python3.6中。因此,您不需要解码
request.body
(假设它是用UTF-8、UTF-16或UTF-32编码的)。

这就解决了我的问题!访问元素的工作方式类似于
body['keyname']
。非常感谢。经过无数个夜晚,这是非常有洞察力的。谢谢。我只在一个环境中遇到了相同的问题,结果发现有问题的环境使用的是py3.5
body_unicode = request.body.decode('utf-8')
body = json.loads(body_unicode)
content = body['content']