如何将 jquery 变量传递给 Django 视图
how to pass jquery variable to django view
总结:我正在创建一个显示用户选择结果的网页。我有两个文件。 html 和 jquery。我创建了一个变量 reports_array = [ ],它在单击 "Done" 按钮时收集用户的所有选择。
问题:我必须将 reports_array[ ] 值传递给 django 视图。
这是 jquery
的代码
.on('click','.done', function(){
var report_array = [];
report_array.push(
{
Layer_Table: layer_array,
Benefits_Table: benefits_array,
Map_Layer_selection: save_selection_layer,
Map_Benefits_selection: save_selection_benefits,
});
console.log(report_array);
这是 view.py
的代码
def done(request):
template = loader.get_template('maps/done.html')
context = RequestContext(request, {
'reports_link': report_array, //I believe this is not correct.
})
return HttpResponse(template.render(context))
如何将 report_array 从 jquery 传递给这个 "context"...????
假设 done.html 包含以下代码
<head>
<title>Reports</title>
</head>
<body>
<p>{{ reports_link }}</p>
</body>
我是 django 界面的新手。假设 url.py 是正确的。我正在寻找我在这里缺少的逻辑。
提前致谢
我不确定我是否理解您希望如何呈现报表数组。但是要将 JQuery 数组传递给 Django 视图,您可以使用 AJAX 调用 Django URL
var obj = {'report_array': report_array}
$.ajax({
type: 'POST',
url: '/DESTINATION_URL/',
contentType: 'application/json; charset=utf-8', //EDITED
data: JSON.stringify(obj),
success: function(data) {
$('body').html(data); //EDITED
},
error: function(rs, e) {
alert(rs.responseText);
}
});
然后在你的 views.py
import json
from django.template.loader import render_to_string
def done(request):
params = json.loads(request.body)
report_array = params['report_array']
html_data = render_to_string('maps/done.html', {'reports_link': report_array})
return HttpResponse(html_data)
那么你的done.html可以是这样的:
<body>
<p>{{ reports_link }}</p>
</body>
这样 AJAX 将呈现您的页面以在成功时显示 report_array。所以它会在不重新加载页面的情况下改变body的内容。
总结:我正在创建一个显示用户选择结果的网页。我有两个文件。 html 和 jquery。我创建了一个变量 reports_array = [ ],它在单击 "Done" 按钮时收集用户的所有选择。
问题:我必须将 reports_array[ ] 值传递给 django 视图。
这是 jquery
的代码.on('click','.done', function(){
var report_array = [];
report_array.push(
{
Layer_Table: layer_array,
Benefits_Table: benefits_array,
Map_Layer_selection: save_selection_layer,
Map_Benefits_selection: save_selection_benefits,
});
console.log(report_array);
这是 view.py
的代码def done(request):
template = loader.get_template('maps/done.html')
context = RequestContext(request, {
'reports_link': report_array, //I believe this is not correct.
})
return HttpResponse(template.render(context))
如何将 report_array 从 jquery 传递给这个 "context"...???? 假设 done.html 包含以下代码
<head>
<title>Reports</title>
</head>
<body>
<p>{{ reports_link }}</p>
</body>
我是 django 界面的新手。假设 url.py 是正确的。我正在寻找我在这里缺少的逻辑。
提前致谢
我不确定我是否理解您希望如何呈现报表数组。但是要将 JQuery 数组传递给 Django 视图,您可以使用 AJAX 调用 Django URL
var obj = {'report_array': report_array}
$.ajax({
type: 'POST',
url: '/DESTINATION_URL/',
contentType: 'application/json; charset=utf-8', //EDITED
data: JSON.stringify(obj),
success: function(data) {
$('body').html(data); //EDITED
},
error: function(rs, e) {
alert(rs.responseText);
}
});
然后在你的 views.py
import json
from django.template.loader import render_to_string
def done(request):
params = json.loads(request.body)
report_array = params['report_array']
html_data = render_to_string('maps/done.html', {'reports_link': report_array})
return HttpResponse(html_data)
那么你的done.html可以是这样的:
<body>
<p>{{ reports_link }}</p>
</body>
这样 AJAX 将呈现您的页面以在成功时显示 report_array。所以它会在不重新加载页面的情况下改变body的内容。