摘要:我正在创建一个显示用户选择结果的网页。我有两个文件。 html和jquery。我创建了一个变量reports_array = [],它会在单击“完成”按钮时收集用户的所有选择。
问题:我必须将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传递给这个“上下文”... ???? 假设done.html包含以下代码
<head>
<title>Reports</title>
</head>
<body>
<p>{{ reports_link }}</p>
</body>
我是django界面的新手。假设url.py是正确的。我正在寻找我在这里缺少的逻辑。
提前致谢
答案 0 :(得分:0)
我不确定我是否了解您希望如何呈现报表数组。但是要将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。因此,它会在不重新加载页面的情况下更改正文的内容。