在没有表单的情况下从 Django 中的 jQuery 检索 POST 数据

Posted

技术标签:

【中文标题】在没有表单的情况下从 Django 中的 jQuery 检索 POST 数据【英文标题】:Retrieving POST data from jQuery in Django without a form 【发布时间】:2011-07-24 09:00:05 【问题描述】:

我目前能够使用 jQuery 的 post 方法查看 myurl

指向的视图
 jQuery.post("/myurl", 'value1':value1, 'value2':value2,
                        'csrftoken': ' csrf_token ', 
             function(data) 
                        alert("Data Loaded: " + data);
                            );

但是,我不知道如何在不使用表单的情况下检索视图内发布的数据:

 def save_user_graph(request):
      if request.method == 'POST': 
            return HttpResponse(request.POST.get('value1'),status=201)

返回None

【问题讨论】:

这应该如您所描述的那样工作。什么返回无?你的 HTTP 响应,还是request.POST.get('value1')?你传递了什么价值观?尝试使用 pdb 找出您收到的值。 那是相当不可读的代码,但想法是正确的。您是否尝试过将其拆分并放入一些日志记录以便查看 value1 的值是多少? 我在 jquery 帖子之前放了一个alert(value1);,它具有正确的值。返回 None 的不是 http 响应,因为我尝试了其他正确传递的变量。 叹息。如果您在使用某些代码时遇到问题,请将其分解,然后记录各个位。所以,登录request.method。然后记录request.POST.get('value1') 的值。然后,记录 HttpResponse。 【参考方案1】:

如果 save_user_graph 返回 None,则 request.method 不是 POST。如果save_user_graph 返回一个包含“None”字样的HttpResponse,那么value1 没有被正确发送。你能澄清一下是什么情况吗?

如果您有 chrome,请尝试导航到打开开发人员工具栏的页面。您可以转到“控制台”选项卡并查看 AJAX 请求并查看随它发送的数据,以确保数据已正确发送。

同样,如果你有firefox和firebug,你可以去页面看ajax请求,查看post参数。

假设 javascript 工作正常,您需要在save_user_graph 中记录 request.POST。在紧要关头,您可以只使用print request.POST,并且假设您使用的是 django 开发服务器,输出将打印在开发服务器输出中。

我们需要更多调试信息才能给出更好的答案。 :)

【讨论】:

以上是关于在没有表单的情况下从 Django 中的 jQuery 检索 POST 数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用自动模型表单的情况下从 Django 的文本框中获取数据?

如何在不通过视图在所有页面中发送表单的情况下从 django 布局(如“base.html”)获取表单数据?

在没有打印预览或打开报表的情况下从 Access 中的表单打印报表?

如何在没有表单字段的情况下从表单传递数据? (PHP)

如何在不使用表单的情况下从 jsp 调用 servlet

如何在不保留唯一数字输入功能的情况下从 Django integerField 中删除箭头?