Передача переменной через тег URL шаблона Django - PullRequest
0 голосов
/ 10 марта 2019

Я пытаюсь передать переменную через тег URL шаблона Django без особого успеха.

Мой путь в urls.py:

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

Вшаблон, я использую JavaScript для генерации listID с циклом for.

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 голосов
/ 10 марта 2019

Вы не можете использовать теги Django внутри Javascript. Они на стороне сервера. Вместо этого вы можете кэшировать URL-адрес в переменной, а затем объединить идентификатор с ним следующим образом:

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: Получить значение переменной javascript в теге шаблона Django url

...