数据库中的列表
本课属于 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__ 来输出内容。
挑战
简单让首页列出真实的书籍。
- 在
books/views.py中,将数据库里的所有书籍作为books传给模板,替换手动输入的列表。 - 在
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 在线编辑器