在Windows中使用curl exe,与我的Django后端进行通信。
以下是我正在使用的命令。
curl --dump-header - -H "Accept: application/json" -H "Content-Type: application/json" -X POST --data "{\"uid\":12,\"token\":\"asdert\"}" http://localhost:8000/restapi/v1/foo/
现在这会以错误的格式提供数据。即在视图中帖子显示此数据 打印request.POST
{"{\"uid\":12,\"access_token\":\"asdert\"}": [""]}
发布json数据的正确方法是什么?
修改
我尝试了其他几种方法,例如 我正在尝试使用http://slumber.in/与我的休息api进行交流。
即使在这里也能得到与上面相同的结果。
import slumber
api = slumber.API("http://localhost/restapi/v1/"
api.foo.post({"uid":"100"})
摘自视图 打印request.POST
{u'{"uid": "100"}': [u'']}
P.S。 - curl --dump-header - -H "Accept: application/json" -H "Content-Type: application/json" -X POST --data "uid=12&token=asdert" http://localhost:8000/restapi/v1/foo/
这很有效。但这不是Json格式。
答案 0 :(得分:7)
我用http://httpbin.org/post尝试了你的命令,它运行正常。
现在,您的问题是您应该从
访问传入的JSON数据request.raw_post_data
而不是request.POST
。
(或者,如果您使用的是Django 1.4+,请使用request.body
,而不推荐使用request.raw_post_data
)
详细代码应该是这样的:
import json
if request.method == "POST":
data = json.loads(request.raw_post_data)
print data