这听起来很简单,但是如何将 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 中有一组复选框值,这些值是在用户按下“推荐”后计算的。我想将它发送到我的索引 View 并将其用作另一个函数的参数。
所以:
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 开发还不熟悉,所以我要么不理解答案,要么他们没有帮助我。
最佳答案
好吧,为了从客户端 (JavaScript) 向后端(您的 Django 应用程序)发送数据,您需要使用一种叫做 Ajax 的东西,它代表异步 JavaScript 和 XML。 基本上,它的作用是允许您与后端服务通信而无需重新加载页面,而您必须使用普通的 POST 或 PUT 表单提交来完成。
最简单的实现是使用 jQuery . jQuery 首先是一个 DOM 操作库,但自从它诞生以来,已经发展到包含的内容远不止于此。
A 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")
关于Javascript 到 Django views.py?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26855631/