Url для получения с параметром для представления django

У меня возникла проблема с моим кодом javascript при попытке использовать AJAX вместо href ссылки.

Мне нужно попасть в django url, который выглядит следующим образом (Django 2.2):

path('one-time/<str:product_url>/', OneTimeProductView.as_view(), name='one_time_product')

первоначальный код в шаблоне django был:

<a href="{% url 'one_time_product' product %}">{{product}}</a>

Теперь я хочу использовать вызов ajax, чтобы весь процесс открывался внутри модала. В моем коде javascript моя функция fetch выглядит следующим образом:

   function handleAccess(){
    var url = "{%  url 'one_time_product' product %}" ;
    fetch(url, {
            method: "POST",
            headers: {
                "X-CSRFToken": '{{csrf_token}}',
                "Accept": "application/json",
                "Content-Type": "application/json"
            }
        })
        .then (response => {
            response.json();
        })
        .then (data => {
            console.log(data);
        })
};

Я знаю, что упускаю что-то связанное с параметрами в переменной url, но я просто не знаю, как правильно добавить их, чтобы соответствовать пути url.

Вот ошибка, которую я получаю при нажатии на кнопку

NoReverseMatch at /one-time/ Reverse for 'one_time_product' with no аргументов не найдено. 1 pattern(s) tried: ['one\-time\/(?P<product_url>[^/]+)\/$']

>

Как мне записать url в функции fetch ?

Я буду благодарен, и любой может указать мне правильное направление здесь.

Спасибо

Вы имеете именованный параметр в определении URL (product_url).

На мой взгляд, вы должны использовать тег url templatetag следующим образом:

var url = "{%  url 'one_time_product' product_url=product.url %}" ;

Измените product.url на фактический url (или slug) из вашей модели продукта.

Это был сложный вопрос. Я решил ее с помощью back-end dev.

var url = "{%  url 'one_time_product' product_url=0 %}".replace('0', {{ product }}) ;
Вернуться на верх