python - 尝试从 Django 中的 POST 解析 `request.body`

由于某种原因,我无法弄清楚为什么 Django 没有正确处理我的 request.body 内容。

它以 JSON 格式发送,查看开发工具中的 Network 选项卡将其显示为请求负载:

{creator: "creatorname", content: "postcontent", date: "04/21/2015"}

这正是我希望将其发送到我的 API 的方式。

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

当然,什么都没有打印出来,但是当我打印 request.body 我得到这个:

b'{"creator":"creatorname","content":"postcontent","date":"04/21/2015"}'

所以我知道我确实有一个 body 正在发送。

我尝试使用 json = json.loads(request.body) 也无济于事。设置该变量后打印 json 也不会返回任何内容。

最佳答案

在 Python 3.0 到 Python 3.5.x 中,json.loads() 只会接受一个 unicode 字符串,所以你必须解码 request.body(这是一个字节string) 之前将其传递给 json.loads().

body_unicode = request.body.decode('utf-8')
body = json.loads(body_unicode)
content = body['content']

在 Python 3.6 中,json.loads() accepts bytes or bytearrays .因此,您不需要解码 request.body(假设它以 UTF-8、UTF-16 或 UTF-32 编码)。

关于python - 尝试从 Django 中的 POST 解析 `request.body`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29780060/

相关文章:

c# - 将 JSON 字符串中的数据覆盖到现有对象实例

android - 从 Android 上的 URL 简单解析 JSON 并显示在 ListView

ruby - 从 json 到 ruby​​ 哈希?

json - PostgreSQL 中 JSON 数据类型的大小限制

c# - 在 C# 中解析 Json 字符串

php - PHP中的序列化或json?

java - 使用 Jackson 反序列化枚举

sql - PostgreSQL:从 JSON 列中删除属性

c# - 将枚举序列化为字符串

javascript - 如何 JSON 字符串化 javascript 日期并保留时区