@DamskiyUgodnik

Как обрабатывать динамический корневой slug?

Всем привет. Начал изучать Django и столкнулся с такой проблемой, сейчас пытаюсь сделать простенький каталог товаров и захотелось сделать, как говорится красиво, так чтобы урлы были без слова catalog вначале. Наример что-то типа такого:

Категории товаров:
/telefoni/knopochniye/
/telefoni/knopochniye/samsung

Страница товара:
/telefoni/knopochniye/beliy-telefon-androyd

Интересует как правильно обрабатывать такие URL, потому как во всех примерах что я видел, имеется какая-то "статическая" часть, за которую можно зацепится например:

urlpatterns = [
    path('catalog/brand/samsung', views.brand_page, name='brand_page'),
    ...
]

А если пойти дальше, и например захотеть ещё иметь текстовые страницы в будущем, URL которых хранятся в базе, то становится вообще непонятно как правильно сделать роутинг.
  • Вопрос задан
  • 108 просмотров
Пригласить эксперта
Ответы на вопрос 2
sim3x
@sim3x
Вставляйте каталог - писать свой роутинг занятие не для начинающих
Ответ написан
Комментировать
crazyzubr
@crazyzubr
Python backend-developer
Попробуйте для начала использовать три вьюхи:

from django.urls import include, re_path

urlpatterns = [
    re_path(r'^(?P<catalog>\w+)/$', views.catalog_view, name='catalog'),
    re_path(r'^(?P<catalog>\w+)/(?P<brand>\w+)/$', views.brand_view, name='brand'),
    re_path(r'^(?P<catalog>\w+)/(?P<brand>\w+)/(?P<product>\w+)/$', views.product_view, name='product'),
    ...
]


Views будут принимать slug как параметры, например, так:

def product_view(request, catalog, brand, product):
    # ...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы