这可能听起来很简单,但如何将我的index.html模板中的Javascript数组中的数据发送到我的views.py?
当用户点击“推荐”按钮时,我的代码会调用一个访问我的数据库并在模板上打印名称的函数。
def index(request):
if(request.GET.get('Recommend')):
sql_handler.recFunc()
context['name'] = sql_handler.name
return render(request, 'polls/index.html', context)
我在Javascript中有一系列复选框值,这些值是在用户按下“推荐”后计算出来的。我想将它发送到我的索引视图并将其用作另一个函数的参数。
所以:
def index(request):
if(request.GET.get('Recommend')):
sql_handler.recommend()
context['name'] = sql_handler.name
//something??
tags = check_array_javascript
context['tags'] = tags
return render(request, 'polls/index.html', context)
我该怎么做?我一直在寻找类似的问题,但我是Django和Web开发的新手,所以我要么不理解答案,要么他们没有帮助我。
答案 0 :(得分:13)
好吧,因此,为了将数据从客户端(JavaScript)发送到后端(您的Django应用程序),您需要使用名为Ajax的东西,它代表异步JavaScript和XML。 基本上它的功能是允许您与后端服务进行通信,而无需重新加载页面,您需要使用普通的POST或PUT表单提交。
最简单的实现是使用jQuery。 jQuery首先是一个DOM操作库,但自从它开始以来已经发展到包含更多的东西。
jQuery ajax call看起来像这样。
$(document).ready(function() {
$.ajax({
method: 'POST',
url: '/path/to/your/view/',
data: {'yourJavaScriptArrayKey': yourJavaScriptArray},
success: function (data) {
//this gets called when server returns an OK response
alert("it worked!");
},
error: function (data) {
alert("it didnt work");
}
});
});
然后可以在views.py
def index(request):
if request.is_ajax():
#do something
request_data = request.POST
return HttpResponse("OK")