Curl Post Json数据未在Python Django中读取

Aka*_*nde 3 python json curl

我在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/
Run Code Online (Sandbox Code Playgroud)

现在这会以错误的格式提供数据.即在视图中帖子显示此数据打印请求.POST

{"{\"uid\":12,\"access_token\":\"asdert\"}": [""]}
Run Code Online (Sandbox Code Playgroud)

发布json数据的正确方法是什么?

编辑:

我尝试了其他几种方法,例如我正在尝试使用http://slumber.in/与我的其他api进行交流 .

即使在这里也得到与上面相同的结果.

import slumber
api = slumber.API("http://localhost/restapi/v1/"
api.foo.post({"uid":"100"})
Run Code Online (Sandbox Code Playgroud)

摘自视图打印请求.POST

 {u'{"uid": "100"}': [u'']}
Run Code Online (Sandbox Code Playgroud)

PS - 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格式.

K Z*_*K Z 7

我用http://httpbin.org/post尝试了你的命令,它工作正常.

现在,您的问题是您应该从中访问传入的JSON数据

request.raw_post_data
Run Code Online (Sandbox Code Playgroud)

而不是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
Run Code Online (Sandbox Code Playgroud)