Menu
CoddyTech

数据库中的列表

本课属于 Coddy Django 学习旅程的“模型和管理后台”单元。第 13 课,共 23 课。

主页仍然列出了直接写在视图中的 3 个标题。视图是页面获取数据的地方:它向 ORM 请求数据行,并将 QuerySet 传给模板,就像你之前传递列表一样。要显示你还没有读过的书籍页面,可以这样写:

from django.shortcuts import render

from .models import Book


def to_read(request):
    books = Book.objects.filter(is_read=False)
    return render(request, "books/to_read.html", {"books": books})

from .models 中的点表示这个应用自己的文件夹。在模板中,循环中的每一项都是一个 Book,所以 {{ book.title }} 和 {{ book.price }} 会读取它的字段,而单独的 {{ book }} 会调用它的 __str__ 来输出内容。

challenge icon

挑战

简单

让首页列出真实的书籍。

  1. 在 books/views.py 中,将数据库里的所有书籍作为 books 传给模板,替换手动输入的列表。
  2. 在 home.html 中,将每本书显示为书名和括号中的年份,例如 Dune (1965)。

在 Shell 选项卡中,输入 Book.objects.create(title="Beloved", author="Toni Morrison", year=1987, price="13.00"),然后重新加载 /:Beloved (1987) 会排在列表最前面。

亲手试试

from django.shortcuts import render


def home(request):
    books = ["Dune", "Emma", "The Hobbit"]
    return render(request, "books/home.html", {"books": books})

模型和管理后台中的所有课

自己练习: Django 在线编辑器