Добавьте переменную шаблона в URL и удовлетворите обратное соответствие
Я нашел способ вводить переменные в URL согласно Django Template: Add Variable Into URL As Parameter, но мое обратное соответствие не работает. Нужно ли мне использовать re-path и регулярные выражения?
Текущий url.py
path('student/item/drilldown/<str:type>/<int:num>/',views.StudentBehaviorListView.as_view(),name='student_item_list_drilldown'),
Оригинал с жестким кодированием:
<a href="{%url 'registration:student_item_list_drilldown' type='grade' num=6%}">
С инъекцией переменных:
<a href="{%url 'registration:student_item_list_drilldown'%}?type=grade&num={{i.grade}}">{{i.grade}}th Grade</a>
Сообщение об ошибке:
NoReverseMatch at /registration/dashboard/
Reverse for 'student_item_list_drilldown' with no arguments not found. 1 pattern(s) tried: ['registration/student/item/drilldown/(?P<type>[^/]+)/(?P<num>[0-9]+)/\\Z']
Это:
{% url 'registration:student_item_list_drilldown' %}
Будет пытаться найти путь с именем student_item_list_drilldown
, прежде чем он будет прочитан как html. Поэтому он пытается (и терпит неудачу) найти <str:type>
и <int:num>
в {% url 'registration:student_item_list_drilldown' %}
. Вы должны включить эти переменные в скобки {% url ... %}
.
Лучшим подходом было бы следующее:
{% url 'registration:student_item_list_drilldown' 'grade' i.grade %}