For some reason I cannot figure out why Django isn't handling my request.body content correctly.

它是以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"}'

所以我知道我do号送来了一具身体.

I've tried using json = json.loads(request.body) to no avail either. Printing json after setting that variable also returns nothing.

推荐答案

在Python 3.0到Python 3.5中.x、 json.loads()只接受unicode字符串,所以在将其传递给json.loads()之前,必须对request.body(字节字符串)进行解码.

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

In Python 3.6, json.loads() accepts bytes or bytearrays. Therefore you shouldn't need to decode request.body (assuming it's encoded in UTF-8, UTF-16 or UTF-32).

Json相关问答推荐

解析 JSON API 响应

hook到 Decodable.init() 以获得未指定的键?

如何删除 django jsonfield 中的特定项目

如何使用 Swiftui 判断 JSON 是否缺少键值对

dotnet core System.Text.Json unescape unicode 字符串

使用适用于 Python 的 Google API - 我从哪里获取 client_secrets.json 文件?

如何在dart Flutter 中将json字符串转换为json对象?

在 JSON 字符串中react i18n 换行符

TypeError:“float32”类型的对象不是 JSON 可序列化的

Gson:@Expose 与 @SerializedName

错误:List 不是 Map 类型的子类型

主体上带有 Json 的 HTTP POST - Flutter/Dart

如何解析 JSON 文件?

将 JSON 导出到环境变量

使用 Bash 变量构建 JSON 字符串

pandas.io.json.json_normalize 带有非常嵌套的 json

Swift 中对象的自动 JSON 序列化和反序列化

RestClientException:无法提取响应.找不到合适的 HttpMessageConverter

react 路由 v^4.0.0 未捕获类型错误:无法读取未定义的属性“位置”

使用 jq,将对象数组转换为具有命名键的对象