Первая ошибка вызвана этой строкой:
url = "{% url 'accept' pk =" + orderID +" %}"
Это неверный синтаксис, поэтому Django выдает ошибку.
Здесь важно понять, что шаблоны компилируются на сервере, а затем отправляются клиенту. Как только они закончатся с сервера, Джанго ничего не сможет с ними сделать.
Итак, это не сработает:
let orderID = $(this).data('id');
url = "{% url 'accept' pk =" + orderID +" %}"
Здесь вы пытаетесь использовать JS для замены orderID
идентификатором объекта. Поскольку шаблоны компилируются на сервере, ваш код JS не будет работать. Вместо этого Django попытается скомпилировать URL с тем, что вы дали.
И если вы думаете о повторном использовании тега {% url %}
в своем коде JS, это тоже не сработает, потому что шаблон находится вне сервера. И django не может работать в браузере вашего клиента.
Решением будет не использовать теги шаблонов django в вашем коде JS:
let orderID = $(this).data('id');
url = '/accept/' + orderID + '/';
Теперь я знаю, что это плохая практика - так жестко кодировать ваши URL. Таким образом, другим решением будет установить атрибут data-url
для каждого заказа.
<button data-id="{{ order.id }}" data-url="{{ order.get_absolute_url }}">
А затем прочитайте URL заказа из этого атрибута данных в вашем коде JS.