更多课程 选择中心


Python培训

400-111-8989

Python实战【第九节】心中有数

  • 发布:Python培训
  • 来源:Crossin的编程教室
  • 时间:2019-03-25 15:39

欢迎大家来到Python自学教程实战篇,上一讲我们用Python实现了数据之间的关联,但是我们之前所有的搜索操作都是基于影片存在的情况下,但是我们网站上所存在的影片不一定是最全的,是用户搜索的,那么用户在这里搜索不到他想要的影片信息,要怎么显示呢?这一讲我们就一起来探讨一下:

Python实战【第九节】心中有数

现在的网页上,如果没有搜到,就是没有显示结果。这个不是很直观,最好能有个提示,说没有搜到任何影片。

要实现这个功能,就得知道每次搜索出来的影片信息共有多少条。web.py 对于数据库的功能并没有做很多封装,并不能很方便地通过我们取出的影片数据得到数量。因此,需要再增加一次数据库查询,得到影片的数量。

获取数量的 SQL 语句是:

SELECT COUNT(*) FROM 数据库 WHERE 查询条件;

web.py 提供了接口:

db.query('SQL语句')

用来获取数据库查询指定 SQL 语句的结果。

在查询 movies 的代码(class index 的 POST 方法)之后增加一行查询数量的代码:

data = web.input()

condition = r'TITLE LIKE "%' + data.title + r'%"'

movies = db.select('movie', where=condition)

count = db.query('SELECT COUNT(*) AS COUNT FROM movie WHERE ' + condition)[0]['COUNT']

AS COUNT 是给查询结果设的别名,为了便于从结果中取值。

注意 WHERE 后面需要留空格,不然会和条件语句连在一起。

[0] 表示从结果里取出第一条,事实上这个查询语句只有一条结果,就是符合条件的数据数量值。

['COUNT'] 则是用设定的别名得到此数值。

这一行代码其实包含了好几条语句,看不明白的话,可以把它分开来,并且 print 出每一个中间步骤的结果:

statement = 'SELECT COUNT(*) AS COUNT FROM movie WHERE ' + condition

result = db.query(statement)

data = result[0]

count = data['COUNT']

得到影片数量之后,有两种选择,一种是直接在代码中判断,如果数量为 0,就返回另一个没有无结果的页面。另一种是把数量也作为参数传递给模板,让模板在显示的时候进行处理。

这里我选择后一种方法。这样不用再额外增加一个模板页面,而且对于搜索到结果的情况,也可以把数量显示在页面上。

所以,在返回模板时增加一个参数:

return render.index(movies, count)

同时,在模板 index.html 里处理这个参数:

$def with (movies, count)

具体显示部分:

$if count > 0:

<p>共 $count 部影片</p>

<p>影片列表:</p>

...

$else:

<p>啊咧,没能找到符合条件的影片</p>

现在去搜一个不存在的关键字试试看,已经可以有提示了。

因为默认首页、演员查询、导演查询都用了同一个模板,所以在几处都要做同样的修改,增加 count 值。

既然增加了搜索结果的数量显示,顺手也把该次搜索的关键字给显示出来好了。模板里再增加一个叫 key 的参数:

$def with (movies, count, key)

在影片数量后面加上关键字:

<p>

共 $count 部影片

$if key:

与 $key 有关

</p>

搜索代码在调用模板时提供 key 参数:

return render.index(movies, count, data.title)

以及演员、导演两处:

return render.index(movies, count, cast_name)

return render.index(movies, count, director_name)

对于默认首页,不存在关键字,就传递 None:

return render.index(movies, count, None)

完成。

做个小小的优化,给 $key 增加两个标签:

与 <b><u>$key</u></b> 有关

这样关键字就被加粗和加下划线了。

留一个思考题:如何在页面上显示最近搜索的关键字。

恭喜您在Python自学的道路上又坚持了一天,我们目前学习的知识比之前的要复杂一些,但是也比之前的有趣多了,所以希望大家跟上我们的步伐,继续加油!

免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

预约申请免费试听课

填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:Python实战【第八节】连连看
下一篇:Python实战【用Python写游戏第一节】hello pygame

【Git第八节】移除文件

【Python实战】四行Python代码就能知道你那的天气,你敢信?

Python实战【用Python写游戏第十三节】exe打包

Python实战【用Python写游戏第十二节】屡败屡战

  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省