Python Django маршрутизация routing

Есть urls:

urlpatterns = [
path('', index),
path('<slug:cat_id>/', sneaker_cat, name = 'sneaker_cat'),
path('<slug:url_sneaker_model>/', sneaker_menu, name = 'sneaker_menu'),]

На данный момент при переходе с sneaker_cat на sneaker_menu появляется исключение - вместо cat_id был получен url_sneaker_model. При этом в url браузера id заменяется на модель кроссовки. Проблему можно решить добавлением / перед slug:url_sneaker_model/, но в таком случае юрл будет например: http://127.0.0.1:1000/sneakers//Nike_Air_Monarch_IV/ (две //).

Вопрос, как сделать так что бы юрл был например таким: http://127.0.0.1:1000/sneakers/1/Nike_Air_Monarch_IV/. Тут 1 после sneakers - cat_id. Мне нужно что бы 1 оставался в юрл при переходе с sneaker_cat на sneaker_menu


Ответы (1 шт):

Автор решения: floydya

Вариант 1.

urlpatterns = [
    path('', index),
    path('<slug:cat_id>/', sneaker_cat, name='sneaker_cat'),
    path('<slug:cat_id>/<slug:url_sneaker_model>/', sneaker_menu, name='sneaker_menu'),
]

Вариант 2.

from django.urls import include

urlpatterns = [
    path('', index),
    path('<slug:cat_id>/', include([
        path('', sneaker_cat, name='sneaker_cat'),
        path('<slug:url_sneaker_model>/', sneaker_menu, name='sneaker_menu'),
    ]),
]

Пример с оффициальной документации тут – ссылка.

→ Ссылка