上次课在详细页面上加了海报。除此之外,数据库里还有其他很多信息我们没有用上,比如演员和导演。这些信息还有个重要的作用,就是把不同的影片关联起来。比如你看了一部电影,对其主演感兴趣,自然就想知道他还演过什么影片。现在,我们就来用演员信息把不同的影片连起来。

仔细看过之前抓取豆瓣影片信息的代码就会发现,豆瓣 API 中是以列表形式提供演员和导演信息。而我在抓取时,将其简化,只是选取了其中的姓名,用逗号(,)拼接起来,作为一个字符串存储在数据库中。因此,如果只是想显示出这些信息,可以简单地实现:

1

主演:$movie.casts

不过现在我们不仅仅要显示主演的名字,还希望能通过主演关联到其他影片。所以这里需要把这些名字分开,并分别加上超链接。

之前课程中说过,web.py 模板可以让你在 HTML 里写 Python。我们现在就需要在模板里对主演名称的字符串做一些处理:

1

2

3

4

5

6

7

8

9$casts=movie.casts.split(',')

主演:

$forcastincasts:

$cast

$ 符号开头的代码将会以 Python 的语法执行。需要特别注意的是,$ casts 之间有一个不可缺少的空格,这个空格说明这里是定义了一个新的变量 casts,而不是获取变量 casts 的值。

通过 split 方法将主演名字拆分成一个字符串列表,再通过 for 循环,将其中每一项拿出,加上 a 标签,做成一个超链接。超链接的地址暂时为空,我们还没有能够处理点击演员名的合适页面。

此时刷新页面,可以看到详细页面上已有了演员信息,并且每个名字下面有一个下划线。只是点击之后并不会有特别的反应。

我们是通过在页面模板中处理演员信息,当然你也可以选择另一种方法,即在后台的响应函数,也就是 class movie 的 GET 方法中,将演员信息处理好,作为额外一项参数传递给模板。

那么接下来的问题,点击了演员名称之后要如何处理。我的想法是进行一次搜索,搜索所有影片演员信息中包含此演员名的电影。因为我们的演员信息是一个字符串存储的,所以可以采用之前搜影片名称类似的方法进行。这样会比较省事,但不足之处是,无法区分名字相同或部分相同的情况。而搜索结果的显示,则可以直接复用 index 模板。

首先在 url 里添加跳转规则:

1

2

3

4

5

6

7

8

9urls=(

'/','index',

'/movie/(.*)','movie',

'/cast/(.*)','cast',

)

然后是处理的方法:

1

2

3

4

5

6

7

8

9classcast:

defGET(self,cast_name):

condition=r'casts like "%'+cast_name+r'%"'

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

returnrender.index(movies)

此处的 GET 方法和 index 里的 POST 方法差不多,唯一不同只是把搜索条件从 title 改为 casts。

最后,再把新增的跳转地址加入到刚刚空着的 a 标签里:

1$cast

这里几个名称都用了“cast”,别搞混了。为了区分对于,你也可以分别改为其他名字 cast_name、url_cast、cast_value 等。

这样就已完成演员名的搜索。现在再点击演员名,就可以跳转到搜索结果的页面。

然而,这时候你很可能发现,点击搜索出的结果,并不能再跳转到其他电影的页面(至少我这里是这样)。看了一下,页面被跳转去了

http://127.0.0.1:8080/cast/movie/123456

而不是预想的

http://127.0.0.1:8080/movie/123456

查了代码,原来 问题出在 a 标签的 href 属性上:

1"movie/$movie['id']"

前面没有加 /,是表示当前页面下的 movie/xxx 地址,而加了 / 才表示主域名下的 movie/xxx 地址。之前都是从主域名下进行搜索,跳转不会有问题了,而现在一旦使用在 /casts 页面下,跳转就不对了。只要多加上 /,改为

1$movie['title']

就没有问题了。

以同样的方式,可以再把导演信息加入搜索功能,这里就不再赘述,各位自行完成。

试着搜了下,发现豆瓣的 top250 里还是比较偏重华语片和老片的。比如张国荣的有 8 部,而克里斯蒂安·贝尔只有 2 部。

声明:

本文采用

BY-NC-SA

协议进行授权,如无注明均为原创,转载请注明转自

个人编程学习网

本文地址:

Python-连连看

python连连看_Python-连连看相关推荐

  1. python连连看_python tkinter实现连连看游戏

    需要自己添加图片素材呦 运行效果: 完整代码 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2017-10-02 15:19:24 # ...

  2. python画代码-Python教程_Python画Mandelbrot集 代码

    Python教程_Python画Mandelbrot集 代码 作者:Comet 来源: 课课家 www.kokojia.com点击数:278发布时间:2015-06-19 11:17:19 曼德勃罗集 ...

  3. c语言实现爬虫功能,用C/C 扩展Python语言_python 调用c语言 python实现简单爬虫功能_python实现简单爬虫...

    用C/C 扩展Python语言 Python是一门功能强大的脚本语言,它的强大不仅表现在功能上,还表现在其扩展性上.她提供大量的API以方便程序员利用C/C++对Python进行扩展.因为执行速度慢几 ...

  4. python编程语言_python编程语言的简要历史

    python编程语言 The Python programming language is a general-purpose programming language that has carved ...

  5. 2019最新Python学习教程(Python视频教程_Python学习教程_Python学习路线):你心目中编程界的MVP是谁?

    2019最新Python学习教程(Python视频教程_Python学习教程_Python学习路线):你心目中编程界的MVP是谁?编程界的王者是渐落寞的Java还是大火的Python? 是不是你们也喜 ...

  6. python连连看_Python 实现auto linlink 连连看

    先上知乎上大神所写: 然后别急着看blog,玩一把游戏再说! 看知乎评论,有人说他用了一个下午时间就写出来了. wo kao!!! 我断断续续写了一周的下午才搞定,然后又用了4个小时将近一个下午才将代 ...

  7. python开发的连连看小游戏

    说明: 1.在网上找了一个基础版本改进而来,大概增加了200行代码,相对原版要复杂一些: 2.界面采用tkinter开发,比较简单: 3.新增了连接线功能: 4.新增了积分功能: 5.新增了陷入死局时 ...

  8. python连连看小游戏_利用Python制作一个连连看小游戏,边学边玩!

    导语 今天我们将制作一个连连看小游戏,让我们愉快地开始吧~ 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块 环境搭建 安装Python并添加到环 ...

  9. Python 实现【连连看】游戏

    自己蛋疼地设计了个连连看游戏,消除算法真的很蛋疼... 完成设计之后,总结了该连连看游戏几个重点: 生成成对的图片元素 将图片元素打乱排布 定义什么才算"相连"(两张图片的连线不多 ...

  10. java 连连看_java—连连看-实现封装

    1.封装 Chess.java package Linkup; /** * 棋子封装类 * * @author laixl * */ public class Chess { // 图片的 状态 // ...

最新文章

  1. 详解原生AJAX请求demo(兼容IE5/6)
  2. 前途无量的MEMS传感器
  3. .net 读word中文字方法
  4. nginx从入门、搭建到理解
  5. ActiveMQ跟SpringBoot整合的双向队列
  6. android lcd驱动框架,LCD驱动及Framebuffer相关(转载)
  7. 记录一种多个按钮中每次只能选中一个的实现方式
  8. linux裸机串口,裸机系列-UART串口
  9. ubuntu 16.0安装mysql8_ubuntu16.0.4 安装 mysql8.0.18的
  10. C++ STL 学习笔记__(6)优先级队列priority_queue基本操作
  11. near、far、huge,based四个个指针的区别
  12. java多线程volatile_java多线程——volatile
  13. python sdklive2d_纯干货!live2d动画制作简述以及踩坑
  14. USB SERVER网络远程管理U盾
  15. 基于知识图谱的推荐系统(KGRS)综述
  16. Google 文档 地址
  17. NewStarCTF2022-Week4-Web
  18. debian安装tools
  19. (ACWing217)绿豆蛙的归宿(数学期望)
  20. win7pc请求kms激活失败,错误代码0xC004F035

热门文章

  1. linux双击启动脚本文件
  2. 高质量WordPress下载站模板5play主题源码
  3. ColdFusion mx 7.0 函数分类列表
  4. 入职阿里巴巴,成为年薪百万阿里P7高级架构师需要必备哪些技术栈,带你来观望一下
  5. C# MemoryStream
  6. Dataframe基础操作巩固——美国大选献金项目
  7. 为云而生,腾讯云服务器操作系统TencentOS内核正式开源
  8. python idle使用_Python IDLE 基本操作
  9. leaflet 把图片放到地图上L.imageTransform或者L.imageOverlay.rotated,把视频放到地图上L.videooverlay,把geoJson放到地图上,
  10. 第三方Charts绘制图表四种形式:饼状图,雷达图,柱状图,直线图