Итак, у меня есть список с некоторыми рецептами, и я хочу, чтобы пользователь мог щелкнуть рецепт и быть перенаправлен на просмотр с более подробной информацией. Другими словами, я хочу, чтобы у каждого рецепта был свой URL. Я пытаюсь этот код, как показано ниже, но он не работает, он перенаправляет сторону 404. После нажатия на рецепт.
Моя модель:
class Recipe(models.Model):
recipe_name = models.CharField(max_length=250)
preparation = models.CharField(max_length=1000)
ingredients = models.ManyToManyField(Ingredient)
recipe_image = models.ImageField(upload_to='images/', default='')
def __str__(self):
return self.recipe_name
Вид:
def GenerallView(request):
lista1 = Recipe.objects.all()
return render(request, 'drinks/GenerallView.html', {'lista1': lista1})
def DetailView(request, pk):
lista = get_object_or_404(Recipe, pk=pk)
return render(request, 'drinks/DetailView.html', {'lista': lista})
URL:
path('generall_view', views.GenerallView, name='GenerallView'),
path('detail_view/<int:pk>', views.DetailView, name='DetailView'),
Шаблоны:
общий вид
<ul>
{% for drink in lista1 %}
<li><a href="{% url 'DetailView' pk=drink.pk %}">{{ drink.recipe_name }}</a></li>
{% empty %}
<li>No notes yet.</li>
{% endfor %}
</ul>
подробный вид
<h1>{{ drink.recipe.name }}</h1>