列表视图与数据库查询
学习如何添加到房源列表页面的路径,编写房源页面的代码,并理解不同的数据库查询。
让我们继续构建我们的网站,创建一个 Listings 页面,用于显示我们创建的房源信息。为此,我们将创建一个 URL、一个视图和一个模板。
Listings URL 路径
你可以在下面的代码编辑器中看到已打开的 urls.py 文件。我们在 第 11 行 添加了指向 Listings 页面的路径。这里我们将其命名为 all_listings,但你可以根据需要选择自己的名称。
注意: 当你运行应用程序时,你会看到一个空白的 Listings 页面,仅包含一个显示“LISTINGS”的标题。我们稍后会填充 Listings 模板的内容。
No configuration found for ID: d11fc2fdb9477e1a9fd2f441ff03b259dc16aa12b53dcb888e7f62feb1eeafa8
Listings 视图
在上面的代码编辑器中,打开应用文件夹(listings/)中的 views.py 文件,查看 Listings 视图的代码。我们在 第 2 行 将 Listings 模型导入到 views.py 中,因为我们需要从模型获取数据,并将其传递给 all_listings 模板。一旦将数据传递给模板,我们就可以使用它并展示给用户。之前的 index 视图不需要传递任何数据,因此我们没有提前导入任何模型。
数据库查询
为了在数据库中创建、检索、更新和删除对象,我们需要对数据库进行查询。Django 提供了一个数据库抽象 API,使我们可以执行上述操作。如果你已经设置了数据库模型,就可以使用查询来管理存储在数据库中的数据。

理解查询
让我们学习如何在 Listings 视图中查询数据库,以在 Listings 页面上显示所有房源信息。
再次打开上面代码编辑器中的 views.py。在 第 9 行 等号(=)之前,我们有 all_listings,它指的是将保存数据库返回数据的变量。你可以为变量设置任意名称。等号(=)之后,我们使用模型名 Listings,其 objects 属性,以及 order_by() 方法,该方法按日期从新到旧排序返回房源信息。
整个查询请求数据库返回 Listings 模型中的所有对象,并按日期倒序排列(-)。所有对象将被存储在变量 all_listings 中,并放入 context = {} 字典中(第 10 行),然后通过 render 方法传递给 all_listings 模板(第 11 行)。
其他查询示例
我们在这里介绍几个额外的查询,但如果你想了解更多,可以查阅官方 Django 文档 获取更详细的说明和更多查询方式。
-
1variable_name = model_name.objects.all()返回指定
model_name在数据库中的所有对象 -
1variable_name = model_name.objects.first()返回指定
model_name在数据库中的第一个对象 -
1variable_name = model_name.objects.last()返回指定
model_name在数据库中的最后一个对象 -
1variable_name = model_name.objects.get(name='Sam')返回与
name='Sam'匹配的指定model_name的对象或对象集合 -
1variable_name = model_name.objects.order_by('list_date')返回按
list_date排序的指定model_name的对象或对象集合