Как использовать переменную в начале django URL, чтобы вернуться к просмотру? - PullRequest
0 голосов
/ 11 марта 2019

Я пытаюсь передать первую часть 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 Ответ

1 голос
/ 11 марта 2019

<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'),
...