簡體   English   中英

使用主鍵 DJANGO 重定向 url

[英]redirect url with primary key DJANGO

所以我有一個包含一些食譜的列表,我希望用戶能夠點擊一個食譜並被重定向到一個包含更多細節的視圖。 換句話說,我希望每個配方都有自己的 url。 我正在嘗試以下代碼,但它不起作用,它在我點擊食譜后重定向 404 端。

我的 model:

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>

對象的名稱是drink ,而不是Recipe ,所以你應該用{% url 'DetailView drink.pk %}寫這個,而且你的視圖的名稱是DetailView ,而不是detail_view

<ul>
{% for drink in lista1 %}
    <li><a href="{% url 'DetailView' drink.pk %}">{{ drink.recipe_name }}</a></li>
{% empty %}
    <li>No notes yet.</li>
{% endfor %}
</ul>

DetailView中,您還傳遞了一個名為lista的變量,因此您應該使用以下方式渲染它:

<h1>{{ lista.recipe_name }}</h1>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM