Как использовать переменную в начале URL-адреса django, чтобы вернуться к просмотру?

#django #django-urls

#django #django-urls

Вопрос:

Я пытаюсь передать первую часть URL-адреса django в представление, чтобы я мог фильтровать свои результаты по термину в URL-адресе.

Глядя на документацию, это кажется довольно простым.

Однако у меня есть следующее urls.py

 url('<colcat>/collection/(?P<name>[w-] )$', views.collection_detail, name='collection_detail'),
url('<colcat>/', views.collection_view, name='collection_view'),
  

В этом случае я хочу иметь возможность перейти к /living и иметь living возможность быть переданным моему представлению, чтобы я мог использовать его для фильтрации по.

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

Чего мне не хватает?

Комментарии:

1. возможно, вам не хватает косой черты в конце. т. е. перейдите к /living/

Ответ №1:

<colcat> недопустимое регулярное выражение. Вам нужно использовать тот же формат, что и для name .

 url('(?P<colcat>[w-] )/collection/(?P<name>[w-] )$', views.collection_detail, name='collection_detail'),
url('(?P<colcat>[w-] )/$', views.collection_view, name='collection_view'),
  

В качестве альтернативы используйте новую path форму, которая будет намного проще:

 path('<str:colcat>/collection/<str:name>', views.collection_detail, name='collection_detail'),
path('<str:colcat>/', views.collection_view, name='collection_view'),