尝试从 Django 中的 POST 解析 `request.body`
Trying to parse `request.body` from POST in Django
出于某种原因,我不明白为什么 Django 没有正确处理我的 request.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"}'
所以我知道我 有一个 body 正在发送。
我试过使用 json = json.loads(request.body)
也无济于事。设置该变量后打印 json
也 returns 什么都没有。
在Python 3.0到Python 3.5.x中,json.loads()
只会接受一个unicode字符串,所以你必须解码request.body
(这是一个字节字符串),然后将其传递给 json.loads()
.
body_unicode = request.body.decode('utf-8')
body = json.loads(body_unicode)
content = body['content']
在Python3.6中,json.loads()
accepts bytes or bytearrays。因此,您不需要解码 request.body
(假设它以 UTF-8、UTF-16 或 UTF-32 编码)。
出于某种原因,我不明白为什么 Django 没有正确处理我的 request.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"}'
所以我知道我 有一个 body 正在发送。
我试过使用 json = json.loads(request.body)
也无济于事。设置该变量后打印 json
也 returns 什么都没有。
在Python 3.0到Python 3.5.x中,json.loads()
只会接受一个unicode字符串,所以你必须解码request.body
(这是一个字节字符串),然后将其传递给 json.loads()
.
body_unicode = request.body.decode('utf-8')
body = json.loads(body_unicode)
content = body['content']
在Python3.6中,json.loads()
accepts bytes or bytearrays。因此,您不需要解码 request.body
(假设它以 UTF-8、UTF-16 或 UTF-32 编码)。