簡體   English   中英

練習 18-8 python 速成課程 - 不能循環

[英]exercise 18-8 python crash course - Can't loop

我正在嘗試遍歷澆頭,但代碼不起作用。

楷模:

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

網址.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')
]

意見:

from django.shortcuts import render
from .models import Pizza
from .models import Toppings

def index(request):
return render(request, 'pizzas/index.html')

def pizzas(request):

pizzas = Pizza.objects.all()
context = {'pizzas': pizzas}
return render(request, 'pizzas/pizzas.html', context)


def toppings(request, toppings_id):

toppings = Toppings.objects.get(id=toppings_id)
context = {'toppings': toppings}
return render(request, 'pizzas/toppings.html', context)

澆頭.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 %}

比薩餅.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 %}

問題出在 for 循環中的 toppings.html 中,並且可能 toppings 視圖也有問題。

這里:

toppings = Toppings.objects.get(id=toppings_id)
context = {'toppings': toppings}

由於使用get ,您只有一條記錄。 您不能遍歷單個對象。 請閱讀有關方法使用的文檔。 如果要列出所有澆頭,則從 url 和視圖中刪除toppings_id ,並使用all()代替:

Toppings.objects.all()

您可以期待並查看此示例,了解如何創建允許按 ID 獲取單個記錄並列出所有記錄列表的視圖。

暫無
暫無

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

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