2016-05-18 9 views
0

Я получил яваскрипт OnClick события внутри шаблона, и я хочу, чтобы вызвать одну из моих Джанго URLS с параметром ид из него, как это:Вызова Джанго URLs внутри JavaScript на событии щелчка

$(document).on('click', '.alink', function() { 
     var id = $(this).attr('id'); 
     document.location.href ="{% url 'myapp:productdetailorder' id %}" 
}); 

Конечно, это вообще не работает. Есть идеи ?

Спасибо заранее!

+0

Что именно является вашей целью? Переменная 'id', на которую ссылаются внутри тегов шаблона Django, не является тем же самым в javascript. Использование шаблонов Django в javascript обычно делает для неэлегантного кода, но похоже, что вы хотите сделать это, по сути, выполнять конкатенацию строк в javascript. Подумайте о тегах Django как функции, возвращающей строку, и напишите соответствующий javascript для конкатенации. – fvgs

+0

Привет, спасибо за комментарий, id - это идентификатор продукта, который я хочу установить для URL-адреса, поэтому мое представление может обрабатывать его и показывать его в другом шаблоне. Я знаю, что могу ошибаться, но это именно то, что мне нужно: хороший способ сделать это. – jsanchezs

+0

Кажется, что соответствующий URL-адрес является конечной точкой вашего API. Обычно вы указываете этот URL в свой код javascript, поскольку API не является динамическим и должен оставаться стабильным, если вы не вносите в него никаких изменений. Поэтому я рекомендую просто написать URL-адрес в вашем javascript-коде. – fvgs

ответ

2

Вы пытаетесь получить доступ к переменной 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); 
}); 
+0

Спасибо за ваш ответ, я знаю, что мы близки, но это делает мне ошибку обратного URL: обратное для 'productdetail' с аргументами '()' и аргументами ключевого слова '{}' не найдено. 1 образец (ы) попытался: ['myapp/product/(? P \\ d +)/$'] ..... и я думаю, что это потому, что параметр id требуется с самого начала, что вы думаете? – jsanchezs

+0

Да, это помощник маршрутов django. Просто позвоните другому помощнику URL, который напечатает нужное вам значение. Если у вас его нет, вы можете просто распечатать любой идентификатор и заменить его на js. Я уточню свой ответ. – Uzbekjon

+0

Работает отлично, спасибо много! – jsanchezs

1

проблема, кажется, в том, что вы используете язык шаблона Джанго в JS файл статической (? я прав) Попытка переместить эту переменную в HTML файл шаблона, например:

<script type=text/javascript> 
Var a = "{% url'myapp:productdetail' id %}" </script> 

И в статическом JS файл:

document.location.href = a; 

 Смежные вопросы

  • Нет связанных вопросов^_^