Если вы хотите использовать RedirectView
, вы можете создать его подкласс и переопределить get_redirect_url
.
class FruitRedirectView(RedirectView):
def get_redirect_url(self):
fruit = get_object_or_404(Fruit, name=self.kwargs['fruit'])
return fruit.url
Затем замените ваши индивидуальные шаблоны URL фруктов на:
path('<slug:fruit>/', FruitRedirectView.as_view(), name='fruit_redirect'),
Обратите внимание, что вам не нужно использовать RedirectView
здесь. Взгляд Алекса С. легче понять, особенно если вы не знакомы с общими взглядами Джанго.
Обратите внимание, что после добавления <slug:fruit>/
представление вызовет ошибку 404 для всех фруктов, которых нет в базе данных. Это немного отличается от того, когда у вас были apple/
и orange/
в ваших шаблонах URL-адресов - в этом случае Django сможет сопоставить шаблон дальше по вашему списку шаблонов URL-адресов.