在没有表单的情况下从 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”)获取表单数据?