第4章:列表页面-Django 3 ... 2 ... 1 ... Takeoff系列

作者 : IT 大叔 本文共2090个字,预计阅读时间需要6分钟 发布时间: 2020-09-17

Django Web 初级起飞教程系列:

第1章:Django Web应用程序设置-Django 3…2…1…起飞!系列

第2章:Django基础-Django 3 ... 2 ... 1 ... 起飞系列

第3章:主页-Django 3 ... 2 ... 1 ... Takeoff!系列

第4章:列表页面-Django 3 ... 2 ... 1 ... Takeoff系列

第5章:新列表页-Django 3 ... 2 ... 1 ...起飞!系列

第6章:导航栏 - Django 3 ... 2 ... 1 ...起飞!系列

第7章:详细清单页面-Django 3 ... 2 ... 1 ... 起飞!系列

第8章:我的列表页面-Django 3 ... 2 ... 1 ... 起飞系列

第9章:编辑列表页面-Django 3 ... 2 ... 1 ... 起飞系列

让我们通过为清单页面创建模板并显示我们创建的清单来继续构建网站。

为此,我们遵循与上一章相同的步骤。我们创建一个URL,一个视图和一个模板。

打开urls.py并将路径添加到列表页面。我在这里将其称为all_listings,但您可以选择自己的名称,也可以根据需要坚持使用书中的名称。

列表URL路径

第4章:列表页面-Django 3 ... 2 ... 1 ... Takeoff系列插图

上一章已经解释了大多数概念。在这里,我们只是将路径添加到列表页面。

第4章:列表页面-Django 3 ... 2 ... 1 ... Takeoff系列插图(2)

列表视图

打开views.py并添加以下代码。

完整代码

第4章:列表页面-Django 3 ... 2 ... 1 ... Takeoff系列插图(4)

缩短版

第4章:列表页面-Django 3 ... 2 ... 1 ... Takeoff系列插图(6)

从.models导入model_name

之所以将Listings模型导入views.py是因为我们需要该模型中的数据,以便可以将其传递给all_listings模板。将数据传递到模板后,就可以使用它并将其显示给用户。索引视图不需要传递任何数据,这就是我们以前没有导入任何模型的原因。

数据库查询

为了从数据库中创建,检索,更新和删除对象,我们需要查询数据库。Django为我们提供了一个数据库抽象API,以执行前面提到的操作。假设您已经设置了数据库模型,则可以使用查询来管理存储在数据库中的数据。

让我们描述下面的代码流程。通过这样做,我将在这里解释所使用的查询。

第4章:列表页面-Django 3 ... 2 ... 1 ... Takeoff系列插图(8)

在等号(=)之前,我们有all_listings,它指向变量,该变量将保存我们正在提示数据库提供给我们的返回数据。您可以将变量设置为任何名称。

在等号(=)之后,我们有模型名称清单,模型的objects属性以及方法order_by(),该方法根据日期将清单从最新到最旧。

整个查询将提示数据库中清单模型中按日期(-)反向排列的所有对象。所有对象都将存储在变量all_listings中,该变量将存储在context = {}字典中,并使用render方法传递给all_listings模板。

我将在此处解释更多查询,但如果您愿意,可以查看Django官方文档,以获取更多详细说明和更多查询。

variable_name = model_name.objects.all()

从数据库返回指定模型名的所有对象

variable_name = model_name.objects.first()

从数据库返回指定模型名的第一个对象

variable_name = model_name.objects.last()

返回数据库中指定模型名的最后一个对象

variable_name = model_name.objects.get(name ='Sam')

从数据库返回与指定model_name匹配name ='Sam'的一个或多个对象

variable_name = model_name.objects.order_by('list_date')

从指定的model_name的list_date排序的数据库中返回一个对象/多个对象

清单模板

该项目的模板通常很长,因此,如果您不满意它们,请参考源代码。我们可以有一本关于此处使用的HTML代码的完整书籍。因为这是一本Python / Django书,所以我不会在这本书上过分关注,但是可以随时在线检查不了解的HTML代码。

第4章:列表页面-Django 3 ... 2 ... 1 ... Takeoff系列插图(10)

Django为我们提供了内置模板标签,我们可以在模板中使用它们来运行Python代码。

%在all_listings中列出%–%空%–%endfor%

由于已将all_listings字典传递给此模板,因此我们可以通过调用在此情况下保存数据的变量all_listings来使用存储在字典中的数据。我们遍历all_listings中的数据并通过使用点符号(。)访问词典数据来显示特定字段,例如,列表标题的listing.title。

如果没有列表,则空子句将显示文本“找不到列表。再试一次”。

endfor子句结束循环

我们还添加了一个链接,以查看每个列表。截至目前,该链接并没有带您到任何地方,但是稍后我们将激活它。诸如此类无关紧要的小细节将随着我们前进而在这里和那里添加。

不幸的是,我无法解释每一行代码,因此请查阅并研究其余代码。我认为,这是一个不错的方法,可以帮助您自行搜索和理解代码。

让我们通过发出python manage.py runserver来运行服务器,然后转到http://127.0.0.1:8000/all_listings/

第4章:列表页面-Django 3 ... 2 ... 1 ... Takeoff系列插图(12)

您应该会看到一个页面,其中包含您到目前为止创建的所有列表。如果您没有看到清单,请回到本章并进行故障排除。

免责声明:
1. 本站资源转自互联网,源码资源分享仅供交流学习,下载后切勿用于商业用途,否则开发者追究责任与本站无关!
2. 本站使用「署名 4.0 国际」创作协议,可自由转载、引用,但需署名原版权作者且注明文章出处
3. 未登录无法下载,登录使用金币下载所有资源。
IT小站 » 第4章:列表页面-Django 3 ... 2 ... 1 ... Takeoff系列

常见问题FAQ

没有金币/金币不足 怎么办?
本站已开通每日签到送金币,每日签到赠送五枚金币,金币可累积。
所有资源普通会员都能下载吗?
本站所有资源普通会员都可以下载,需要消耗金币下载的白金会员资源,通过每日签到,即可获取免费金币,金币可累积使用。

发表评论