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

Passing variable through Django template url tag

我试图通过 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,代码工作正常。

所以我的问题是,我怎样才能使它与变量一起工作。

您不能在 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