如何从Django中的POST请求中获取数据

时间:2015-12-04 16:17:15

标签: django

我花了很多时间在我的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中得到空值: 我的问题如何从发布到我的应用内部状态

以下是更多细节:

  1. 我处理来自第三方网站的回发,因此我无法更改POST请求的内容
  2. 我不需要(想要)任何形式/模型的请求,我只需要收集状态值。
  3. 感谢您的帮助。

3 个答案:

答案 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>`