Вы пытаетесь получить доступ к переменной javascript, которая создается при щелчке пользователя по интерфейсу внутри вашего шаблона Django на бэкэнд. Но вы уже знаете, что это не сработает.
Лучшим вариантом было бы реконструировать URL в JavaScript:
$(document).on('click', '.alink', function() {
// Generate URL without "id" bit
var url = "{% url 'myapp:productdetail' %}";
var id = $(this).attr('id');
// Construct the full URL with "id"
document.location.href = url + "/" + id;
});
Если у вас нет помощника Джанго URL-адрес, который будет возвращать URL, что вам нужно, вы можете распечатать только все и просто заменить его в JavaScript следующим образом:
$(document).on('click', '.alink', function() {
var url = "{% url 'myapp:productdetail' 123 %}";
var id = $(this).attr('id');
// Construct the full URL with "id"
document.location.href = url.replace('123', id);
});
Что именно является вашей целью? Переменная 'id', на которую ссылаются внутри тегов шаблона Django, не является тем же самым в javascript. Использование шаблонов Django в javascript обычно делает для неэлегантного кода, но похоже, что вы хотите сделать это, по сути, выполнять конкатенацию строк в javascript. Подумайте о тегах Django как функции, возвращающей строку, и напишите соответствующий javascript для конкатенации. – fvgs
Привет, спасибо за комментарий, id - это идентификатор продукта, который я хочу установить для URL-адреса, поэтому мое представление может обрабатывать его и показывать его в другом шаблоне. Я знаю, что могу ошибаться, но это именно то, что мне нужно: хороший способ сделать это. – jsanchezs
Кажется, что соответствующий URL-адрес является конечной точкой вашего API. Обычно вы указываете этот URL в свой код javascript, поскольку API не является динамическим и должен оставаться стабильным, если вы не вносите в него никаких изменений. Поэтому я рекомендую просто написать URL-адрес в вашем javascript-коде. – fvgs