通过Django模板url标签传递变量

时间:2019-03-10 00:16:36

标签: django django-templates django-urls

我试图通过Django模板url标记传递变量,但收效甚微。

我在urls.py中的路径:

path("viewListing/<int:listingID>", views.bookListing, name="viewListing")

在模板中,我使用javascript生成带有for循环的listingID。

for(j=0; j<5; j++){
  var thisID = (data[j].id)
  imgA.href = "{% url 'viewListing' thisID %}";
}

但是,我收到此错误

Reverse for 'viewListing' with arguments '('',)' not found. 1 pattern(s) tried: ['viewListing/(?P<listingID>[0-9]+)$']

如果我传递一个数字而不是thisID(例如1),则代码可以正常工作。

所以我的问题是,如何使它与变量一起工作。

1 个答案:

答案 0 :(得分:0)

您不能在Javascript中使用django标签。它们是服务器端。相反,您可以做的是将URL缓存在变量中,然后将ID像这样连接起来:

for(j=0; j<5; j++){
    var thisID = (data[j].id)
    var listing_url = "{% url 'viewListing' listingID=9999 %}";
    imgA.href = listing_url.replace(/9999/, thisID);
}

贷记到@MikeLee: Get javascript variable's value in Django url template tag