Обработка URL в Django

Обработка URL в Django

Народ подскажите как быть, хочу попробовать сайт-каталог фильмов сделать, но вот в чём проблема:

- детальная страница фильма имеет URL типа — /films/avatar/

- и страница со списком фильмов по жанру — /films/scifi/

т.е. по сути и там и там slug, но как программе дать понять какое view подтягивать (детальной страницы фильма или список фильмов по жанру).

Нашла решение через диспатчер, но может подскажите более лучшее решение?

urls.py

urlpatterns = [ path('<slug:slug>/', dispatch_view, name='dispatch') ]

views.py

from django.http import Http404 def dispath_view(request, slug): try: Category.objects.get(slug=slug) except Category.DoesNotExist: try: Widget.objects.get(slug=slug) except Widget.DoesNotExist: raise Http404("Not found") else: return WidgetDetailView.as_view()(request, slug) else: return CategoryListView.as_view()(request, slug)
55
10 комментариев

/films/avatar
/genres/scifi
лучше разные сущности разделять, а не кидать в кучу, так будет понятее

4
Ответить

Модели фильма и жанры разные. Но URL-путь по-своему хочу, например как на RAWG:
https://rawg.io/games/strategy
https://rawg.io/games/xbox-one

Тут не идёт /genres/strategy/ или /platfroms/xbox-one/

а всё сводится к тому, что всё идёт от games.

Ответить