По какому, конкретно, адресу? Проблема, возможно, в том, что у вас равносильные, с точки зрения парсера урлы:
urlpatterns = [
path('<int:cocktail_id>/', by_cocktail_id),
path('<str:cocktail_name>/', by_cocktail_name),
path('', index),
]
И допустим есть урл вида:
mysite.ru/1/
И как django должен это понимать? 1 как строку, 1 как число?
Для начала, выделите роуты более конкретно. Далее - проверяйте каждый роут отдельно. Есть как минимум несколько "точек внимания": Какие данные приходят? Находит ли django коктейли в базе (print в консоль)? Правильно ли передаются ли данные в шаблон?
И да, использовать в качестве роута название в чистом виде - сомнительная практика. Как минимум, если в названии есть пробелы, то они заменятся на
%20 И тогда в качестве параметра придет что-то вроде:
имя%20коктейля
Используйте
slug