Тег URL в Django не работает с JS файлом, странная ошибка

Хоббист здесь. Не могу понять, как использовать статический шаблон {% url %} с динамическим javascript.

Например, я создаю список дней для календаря, где каждый день при нажатии на него должен извлекать данные из базы данных на основе его даты.

День создается динамически в цикле, где для URL устанавливается атрибут href.

Мой <a href> в JS-коде выглядит следующим образом для установки URL:

aLink.setAttribute('href', currentYear + '-' + (currentMonth + 1) + '-' +dayCounter)

Проблема с этим методом заключается в следующем - взгляните на мой URLS.py

urlpatterns = [
    path('<int:tutor_id>', views.tutorHomeOverviewPage, name='tutorHomeOverviewPage'), #homepage for when tutor/customer signs in
    path('<int:tutor_id>/<slug:selected_date>', views.tutorSelectedDay, name='tutorSelectedDay')

]

Если я начинаю со страницы, которая соответствует пути 1, следующим образом:

http://127.0.0.1:8000/tutorhomepage/7`

Код для элемента списка выглядит следующим образом и не указывает на подходящий путь, потому что удаляет /7 из URL:

<a href="2022-10-17" id="day17">17</a>

Путь:

http://127.0.0.1:8000/tutorhomepage/2022-10-14

Выдает мне очевидную ошибку, когда я нажимаю на нее:

Using the URLconf defined in sass_language_tutor_app.urls, Django tried these URL patterns, in this order:

tutorhomepage/ <int:tutor_id> [name='tutorHomeOverviewPage']
tutorhomepage/ <int:tutor_id>/<slug:selected_date> [name='tutorSelectedDay']
admin/
The current path, tutorhomepage/2022-10-7, didn’t match any of these.

Теперь, если я вручную ввожу в строку URL 7/, перед датой, это работает, и клики соответствуют второму пути и не избавляются от 7/.

Неизвестно, почему возникает эта проблема или как ее устранить.

Я хочу использовать {%url template%}, который работает, когда я делаю статический LI в html файле, как например:

<a href="{% url 'tutorhomepage:tutorSelectedDay' tutor_id='7' selected_date='2022-10-16'%}">Date check test - click here</a>

Проблема в том, что когда я пытаюсь сделать это в JS-файле, он добавляет знаки % и амперсанды и превращает URL в то, чем он не является. Путь не совпадает.

Есть идеи о том, что происходит в этой ситуации и каким может быть возможное решение?

Любая помощь будет очень признательна, спасибо!

В вашем url <slug:selected_date> вы говорите Django, что url должен содержать Slug, а дата не является slug, вы передаете ее как строку, поэтому вам нужно сделать так:

urlpatterns = [
    path('<int:tutor_id>', views.tutorHomeOverviewPage, name='tutorHomeOverviewPage'), #homepage for when tutor/customer signs in
    path('<int:tutor_id>/<str:selected_date>', views.tutorSelectedDay, name='tutorSelectedDay')
]
Вернуться на верх