Django - 将jQuery数组作为url参数传递

时间:2017-04-08 00:12:20

标签: jquery python django

我有以下脚本:

jQuery(document).ready(function($) {
    $( "#continue" ).click(function() {
        var selected = $("#meds").bootgrid("getSelectedRows");
        window.location = "{% url 'meds:prescription' selected %}"
    });
});

和这个观点:

class PrescriptionView(generic.ListView):
    template_name = 'meds/prescription.html'
    context_object_name = 'meds'
    model = Medicament

    def get_queryset(self):
        return Medicament.objects.filter(id__in=self.kwargs['selected'])

使用此网址:

url(r'^prescription/(?P<selected>.*)/$', views.PrescriptionView.as_view(), name='prescription')

知道selected是一个数组,例如[3, 6, 4]我试图用它来显示那个数组在该数组中的对象但是由于某种原因,即使数组已满,也没有传入这个网址看起来像这个http://127.0.0.1:8000/prescription//有一个空页面,就像参数没有通过一样

1 个答案:

答案 0 :(得分:1)

那是因为selected变量被解析为Django模板变量,但实际上并非如此。它是一个JS变量,因此,它被解析为一个空字符串。

但有一种解决方法:

jQuery(document).ready(function($) {
    $("#continue").click(function() {
        var selected = $("#meds").bootgrid("getSelectedRows");
        var url = "{% url 'meds:prescription' 'test' %}";  // 'test' is just a placeholder value
        url = url.replace('test', selected);  // replace 'test' with the 'selected' value
        window.location = url;
    });
});