Почему django не может распознать два конвертора путей друг от друга?
У меня есть приложение django и у меня есть 2 пути url, которые отличаются только в последней части, которая является конвертером путей:
path('questions/<pk>', views.QuestionDetailView.as_view(), name='question_detail'),
path('questions/<slug:tag_slug>', views.QuestionListView.as_view(), name='questions_by_tag')
Когда я перехожу на 127.0.0.1:8000/questions/1, все нормально и он показывает правильные результаты, но когда я перехожу на 127.0.0.1:8000/questions/something (something - slug), он говорит, что страница не найдена! (Он должен использовать путь seconed url, но он этого не делает!)
Когда я меняю порядок путей, он показывает второй правильно, а с другим проблема! Кто-нибудь может мне помочь?
Вы не указали конвертер путей для <pk>, поэтому будет использоваться конвертер путей <str:…> [Django-doc], и <str:…> является superset из <slug:…>, следовательно, все, что совпадает с <slug:…>, совпадает и с <str:…>, а значит, второй шаблон никогда не сработает.
Вы должны использовать конвертер путей <int:…> для целых чисел, так:
path('questions/<int:pk>/', views.QuestionDetailView.as_view(), name='question_detail'),
path('questions/<slug:tag_slug>/', views.QuestionListView.as_view(), name='questions_by_tag')