Django - 如何将JSON对象作为有效负载传递给request.post()时将其字符串化

Edg*_*yan 3 python django json

我的Django视图中有以下代码:

headers = {'Authorization': "key=AAAA7oE3Mj...",
               'Content-type': 'application/json'}
token  = "dJahuaU2p68:A..."
payload = {"data": {}, "to": user_web_tokens}
url = "https://..."
r = requests.post(url, data=payload, headers=headers)
Run Code Online (Sandbox Code Playgroud)

问题是响应终止时出现400错误,错误消息为:

JSON_PARSING_ERROR:位置0处的意外字符(t)

如果我传递一个字符串而不是JSON:

payload = {"data": {}, "to": user_web_tokens}

...我得到一个稍微不同的错误:

JSON_PARSING_ERROR:位置19处的意外字符(u).

我遇到过一个帖子,他们说json对象应该在作为有效负载传递之前进行字符串化.但我不知道如何在Django中这样做.它是否与序列化有关?请帮帮我 !

Leo*_*rd2 8

当您post使用嵌套字典数据时,json.dumps会有所帮助,或者您可以通过json参数直接传递它.

import json
# ...
r = requests.post(url, data=json.dumps(payload), headers=headers)
# or
r = requests.post(url, json=payload, headers=headers)
Run Code Online (Sandbox Code Playgroud)

官方文档.