Обработка 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)
/films/avatar
/genres/scifi
лучше разные сущности разделять, а не кидать в кучу, так будет понятее
Модели фильма и жанры разные. Но URL-путь по-своему хочу, например как на RAWG:
https://rawg.io/games/strategy
https://rawg.io/games/xbox-one
Тут не идёт /genres/strategy/ или /platfroms/xbox-one/
а всё сводится к тому, что всё идёт от games.