我花了很多时间在我的django 1.8应用程序中尝试从POST请求中获取数据,但无论我做什么,它都无法正常工作。跳得更有技巧的人建议解决方案。
我需要从请求中获取数据:
curl.exe -X POST --data "Status=OK" http://localhost:8000/postback
urls.py的相关内容:
url(r'^postback', 'app.views.process_postback'),
views.py的相关内容:
@csrf_exempt
def process_postback(request):
if request.method == 'POST':
dict = request.POST
print(dict)
return HttpResponse("OK")
我总是在dict中得到空值: 我的问题如何从发布到我的应用内部状态
以下是更多细节:
感谢您的帮助。
答案 0 :(得分:2)
我终于弄明白了什么是错的。我使用VS 2013和PTVS(Visual Studio的Python工具)作为我的开发环境。看来,如果在调试器下启动项目,那么http请求就会搞砸了。如果我在没有调试器的情况下运行项目,那么一切正常我试着查看调试器代码(C:\ Program Files \ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ Extensions \ Microsoft \ Python Tools for Visual Studio \ 2.2 \ visualstudio_py_debugger.py)但是没有找到一些明显的东西这会导致这种行为。如果有人遇到它并且知道如何修复它会很高兴知道。
答案 1 :(得分:0)
关注https://superuser.com/questions/149329/what-is-the-curl-command-line-syntax-to-do-a-post-request
从您的命令中删除-X POST
选项
curl.exe --data "Status=OK" http://localhost:8000/postback
输出:
<QueryDict: {u'Status': [u'OK']}>
[04/Dec/2015 21:03:15] "POST /postback HTTP/1.1" 200 2
pip freeze
输出:
Django==1.8.6
答案 2 :(得分:0)
我使用了django 1.10。所以我只能提供一些建议。当我想从表单中获取值时,无论是GET还是POST,我都使用dict=request.POST.get('dict')
第二个词典&#39;是你的表单的输入名称。例如在html中,它应该是`
<form name="input" method="post">
<input type="text" name="dict" >
<input type="submit" value="submit">
</form>`