Тег 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')
]