如何将jquery变量传递给django视图

时间:2015-06-25 22:27:13

标签: jquery python django django-views

摘要:我正在创建一个显示用户选择结果的网页。我有两个文件。 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是正确的。我正在寻找我在这里缺少的逻辑。

提前致谢

1 个答案:

答案 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。因此,它会在不重新加载页面的情况下更改正文的内容。