我正在使用一个从POST数据获取整数的Django服务器。如果我通过GET发送整数没有问题,但是当它通过POST发送时会被丢弃。
我用:
运行服务器./manage.py runserver 0.0.0.0:8000
然后使用以下命令生成POST请求:
curl -X POST -H "Content-Type: application/json" -d '{"myInt":4}' "http://0.0.0.0:8000/myURL/"
我在视图中使用PDB,这是我得到以下命令的结果:
request.method
> 'POST'
request.body
> '{"myInt":4}'
request.POST
> <QueryDict: {}>
我使用@csrf_exempt作为视图的装饰器,只是为了确保不会导致任何问题。
目前令人困惑的是request.POST不包含myInt,我的POST请求是不是格式正确?
答案 0 :(得分:2)
您的帖子请求是发送JSON而不是application / x-www-form-urlencoded
如果你看django docs about HttpRequest.POST。
A dictionary-like object containing all given HTTP POST parameters, providing that the request contains form data. See the QueryDict documentation below. If you need to access raw or non-form data posted in the request, access this through the HttpRequest.body attribute instead.
您需要POST表单编码数据。我没有对此进行测试,并且暂时没有使用curl,但我相信以下内容应该有效。
curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "myInt=4" "http://0.0.0.0:8000/myURL/"