练习18-8 python速成班-Can';t形环

练习18-8 python速成班-Can';t形环,python,django,Python,Django,我正在尝试循环通过浇头,但代码不起作用 型号: from django.db import models class Pizza(models.Model): name = models.CharField(max_length=200) def __str__(self): return self.name class Toppings(models.Model): pizza = models.ForeignKey(Pizza, on_delete=models.CASCA

我正在尝试循环通过浇头,但代码不起作用

型号:

from django.db import models

class Pizza(models.Model):

name = models.CharField(max_length=200)

def __str__(self):
    return self.name

class Toppings(models.Model):

pizza = models.ForeignKey(Pizza, on_delete=models.CASCADE)
name = models.CharField(max_length=200)

class Meta:
    verbose_name_plural = 'toppings'

def __str__(self):
    return self.name
URL.py:

from django.urls import path
from . import views

app_name = 'pizzas'

urlpatterns = [
    path('', views.index, name='index'),
    path('pizzas/', views.pizzas, name='pizzas'),
    path('pizzas/<int:toppings_id>/', views.toppings, name='toppings')
]
toppings.html:

{% extends 'pizzas/base.html' %}

{% block content %}

<p>Pizzas: {{ pizza }}</p>
<p>Toppings:</p>
<ul>
{% for topping in toppings %}
  <li>
      <p>{{ topping }}</p>
  </li>
{% empty %}
  <li>There are no toppings</li>
{% endfor %}
</ul>

{% endblock content %}
{%extends'pizzas/base.html%}
{%block content%}
比萨饼:{{pizza}

浇头:

    {%用于浇头中的浇头%}
  • {{topping}}

  • {%empty%}
  • 没有浇头
  • {%endfor%}
{%endblock内容%}
pizzas.html:

{% extends 'pizzas/base.html' %}

{% block content %}

<p>Pizzas</p>

<ul>
{% for pizza in pizzas %}
  <li>
    <a href="{% url 'pizzas:toppings' pizza.id %}">{{ pizza }}</a>
  </li>
{% empty %}
  <li>
    No pizzas yet duh
  </li>
{% endfor %}
</ul>

{% endblock content %}
{%extends'pizzas/base.html%}
{%block content%}
比萨饼

    {披萨中的披萨%}
  • {%empty%}
  • 还没有比萨饼,是吗
  • {%endfor%}
{%endblock内容%}
问题出在for循环的toppings.html中,可能是toppings视图也有问题。

此处:

toppings = Toppings.objects.get(id=toppings_id)
context = {'toppings': toppings}
由于使用,您只有一条记录。不能在单个对象上循环。请阅读有关方法使用的文档。 如果要列出所有浇头,请从url和视图中删除
toppings\u id
,并改用
all()

Toppings.objects.all()

您可以向前看并检查如何创建一个视图,允许按ID获取单个记录并列出所有记录列表。

代码不起作用的确切含义是什么?我删除了
toppings\u ID
,但我的代码无论哪种方式都不起作用,现在我在/pizzas/Reverse处得到一个错误
NoReverseMatch,用于带有参数的“toppings”(1,)“没有找到。尝试了1个模式:['toppings/$”]
我在视图上的代码看起来是这样的
def toppings(请求):toppings=toppings.objects.all()上下文={'toppings':toppings}返回呈现(请求,'pizzas/toppings.html',context)
my
toppings.html
与我在文章上的路径相同('toppings/',views.toppings,name='toppings')但是我仍然得到没有反向匹配的错误,我无法完成这项工作
Toppings.objects.all()