练习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)
mytoppings.html
与我在文章上的路径相同('toppings/',views.toppings,name='toppings')但是我仍然得到没有反向匹配的错误,我无法完成这项工作
Toppings.objects.all()