100行Python代码,快速搭建一个电影展示网站

学习Python有一段时间了,与其在家无所事事,不如宅家贡献学习两不误。很多人学习 Python都是因为它简单,却功能强大。但是学着学者就从入门到放弃了,主要是没有目标

比如你想做一个爬虫,或者想写一些自动化的脚本提高工作效率,或者进行数据分析帮公司提高运营效率,用数据驱动运营。人一定有目的才有动力,而我学Python主要是为了后端运维使用。

一百行代码能实现一个简单的网页后端么?答案是可以的,下面我来带大家快速实现一个Flask后端程序。

01整体项目设计

为了便于理解,我没有设置复杂的项目结构,整个项目只有五个文件,包括两个py文件和三个html文件,文件结构如下:

app.py文件:是flask的程序主题文件,这个项目的逻辑代码都在这个文件里,只有不到100行代码就实现了一个简易的网站的后端逻辑,足见Flask的强大。

douban.py文件:是一个爬虫文件,从豆瓣top250爬取数据存放到SQLite数据库,这个py文件运行一下就会生成test.db文件供flask使用。

_macros.html:是一个分页器html文件,供网页加载使用。

moiveDrtail.html:是电影详情页,这里展示电影的详细内容,还有一个form表单用来提交评论。

02

项目实战一说起配置项目,很多人都是一个头两个大。Flask就相对特别友好,具体的配置思路就是我不要你觉得,我要我觉得。一切都使用默认配置,只对自己需要修改的配置进行更改。

1).项目配置

flask提供了很多默认的配置,很多情况下不用特别配置就使用默认的配置就可以了。比如在app同级的templates文件夹用来存放网页模板,同级的static文件夹用来存放静态文件等等。我们对这些不做更改,使用默认配置。所以呢,我们这里需要配置的只有数据库连接,代码如下:

这里通过Flask实例化了一个app。

通过变量DB_URL设置数据库连接字符串。

app.debug设置为Ture为了方便调试代码。正式上线的时候直接删除这行代码,因为默认就是False。

通过SQLAlchemy这个类来连接数据库。

2).数据库的设计

数据库设计是一个应用最重要的基石,一个应用的好坏主要就看数据库的设计,所以说这里需要重点说一下数据库的设计。这里选用的是是SQLite数据库,这是一个非常简单的关系型数据库。

关系数据库是建立在关系模型上的数据库,所以表之间的关系在数据库编程中尤为重要。我们这次这个应用比较简单,只有两张表,采用一对多的模型进行设计。

整个数据库我们设计两张实体表,movieInfo电影信息表和Comment评论表。电影信息表中包括了我们从豆瓣电影Top250中爬到数据,使用豆瓣的moiveID作为主键约束。

评论表中主键无实际意义,使用自增长模式。使用字段moiveID作为与电影信息表做关联。如图所示,电影信息表与评论表为一对多的关系。

数据存储格式说明:

因为应用比较简单,不涉及时间的计算,所以时间采用的String格式来存储,方便调用。

图片的存储,极其不建议将图片存放在数据库中,数据库中采用String格式存放图片的url即可。

比如在这里,我直接将豆瓣网的图片url存放在我的数据库中,用的时候直接调用即可。

3).转为SQLAlchemy表达方式

03Flask项目逻辑

1).网站的首页

@app.route('/')这个装饰器定义了这个函数对应的网页链接地址,一个反斜杠就是默认地址打开就调用这个函数。

page = request.args.get('page', 1, type=int)获取页面参数,如果没有获取到,则默认为第一页,这个参数的类型为int类型。

pagination = movieInfo.query.order_by(movieInfo.top.asc()).paginate(page, per_page=10, error_out=True)这一句是首先是按照movieInfo表中top字段进行正向排序,然后使用flask自带的分页器paginate函数,第一个参数是页码,第二个参数是每页展示的数量,第三个参数是超出页数报错设置。

now_moives = pagination.items 获取到展示的电影信息数据。

return render_template("moiveBase.html", now_moives=now_moives, pagination=pagination)这句调用了moiveBase.html这个模板网页,并向这个网页传递了两个参数来渲染网页,一个是需要展示的网页信息,一个是分页器信息。

2).电影详情页面

这个页面主要做一个电影详细信息的展示,展示结束后先显示评论区,然后显示评论框。在评论框评论的留言信息在提交后需要显示在该页面的评论区中。

@app.route('/moive/<int:moive_id>')这个装饰器中需要一个类型为int,变量名为moive_id的参数在下面函数中使用。

Comment.query.filter_by这句获取了该moiveID的所有评论并倒序排列。

获取各种详细数据这里是因为我在爬取数据的时候,这些数据有可能有多个,我是以列表的格式存在数据库中,在取出来的时候需要对数据进行处理。因为很多项都需要相同的操作,所以单独抽取出来做一个函数来调用。

然后与网站首页一样调用的render_template函数来渲染Html页面,因为很多数据是处理过的,所以返回值比较多。

3).提交评论功能

@app.route("/submitcomments",methods=['POST'])这个装饰器规定了这个函数只能被POST提交。

在这个函数内部主要是实现了获取了POST提交过来的数据并保存到数据库中。

return redirect(url_for('moiveDetail',moive_id = moive_id))这句首先是通过flask自带的url_for给指定的函数构造 URL,调用了moiveDetail函数并传递了moive_id给他。redirect函数重定向到这个URL。

4).设置程序入口并运行if__name__ == '__main__':

app.run()至此,这个网页后端的代码已经全部完成了,只要配合前端展示页面,这个网页就可以运行起来了。

总结:Flask是一个使用Python编写的轻量级 Web 应用框架。但是麻雀虽小,却五脏俱全。在这个项目中,使用到了一个网站会经常用到的几个知识点:

1). 当展示列表信息太多时,分页器的使用。

2). 网页链接中的参数传递。设置格式的参数传递,GET形式的参数传递。

3). 与后台数据库交互进行数据处理,并将处理后的数据返回前端页面。

4). 网页Form表单的提交。

5). 重定向以及反向解析带参数的URL。

包邮送书5本,有兴趣的速来吧!

入门: 最全的零基础学Python的问题 | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径

干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |  从万众期待到口碑扑街!唐探3令人失望 | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影

趣味:弹球游戏 | 九宫格 | 漂亮的花 | 两百行Python《天天酷跑》游戏!

AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影

小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|

年度爆款文案

1).卧槽!Pdf转Word用Python轻松搞定!

2).学Python真香!我用100行代码做了个网站,帮人PS旅行图片,赚个鸡腿吃

3).首播过亿,火爆全网,我分析了《乘风破浪的姐姐》,发现了这些秘密

4).80行代码!用Python做一个哆来A梦分身

5).你必须掌握的20个python代码,短小精悍,用处无穷

6).30个Python奇淫技巧集

7).我总结的80页《菜鸟学Python精选干货.pdf》,都是干货

8).再见Python!我要学Go了!2500字深度分析!

9).发现一个舔狗福利!这个Python爬虫神器太爽了,自动下载妹子图片

「点点赞赏,手留余香」

赞赏

  • 彪悍美少女战士
  • xfvl002db5a4
  • 2人赞过
2
0
0
评论 0 请文明上网,理性发言

相关文章

  • 现状揭秘:Python岗位大厂50K起?程序员:心态崩了! 屠杀各种榜单,拿下语言排行榜的Python,薪酬真的如同网传开挂了吗?笔者在脉脉上发现了这样的一个信息: 但Python真的这么火?笔者准备去全网帮你们"打探"一下,让大家了解真实的Python市场。 (数据来自看准网2019年11.4日数据)从上图看,P
    饯莸抟 9 2 0 条评论
  • 一些科学家开始使用比Python性能更强大的新编程语言了,它和Python一样能够"立等可取",而且计算能力还更强。 原文作者:JeffreyM.Perkel2015年,生物信息学家JohannesK?ster还是(用他自己的话说)"差不多全职写Python的"。他当时已经用Python写过一个备受欢迎的工具--流程管
    乱世知己琪哪 8 1 0 条评论
  • 为什么Python不是未来的编程语言? 作者|RheaMoutafis 译者|弯月,责编|郭芮 出品|CSDN(ID:CSDNnews) 以下是译文:Python经过了几十年的努力才得到了编程社区的赏识。自2010年以来,Python得到了蓬勃发展,并最终超越了C、C#、Java和JavaScript。 但是,这种趋
    天王地虎happy 4 0 0 条评论
  • Python之父,现在成了微软的打工人。 没错,全世界程序员们最喜欢的编程语言的创造者,自述耐不住退休生活的寂寞,重返岗位发光发热。 GuidoVanRossum,打算去微软做些什么?又为什么选择微软? Python之父加入微软干什么? 几个小时前,GuidoVanRossum本人发推宣布了这个消息,他说:"退休生
    路茫之间 5 2 0 条评论
  • 大数据文摘出品 来源:medium 编译:陈之炎、coolboy 自从20世纪90年代初发布以来,Python一直相当火爆,在这二十多年里,它的流行程度远远超过了C、C#、Java甚至Javascript。 虽然Python在数据科学和机器学习领域占主导地位,甚至是科学和数学计算领域的主角,但与Julia、Swift
    ahdhtang 5 0 0 条评论
  • Bottle是一个超轻量级的python库。说是库,其本身只由一个4000行左右的文件构成,并且不需要任何依赖,只靠python标准库即可运作。 和它本身的轻便一样,Bottle库的使用也十分简单。相信在看到本文前,读者对python也已经有了简单的了解。那么究竟何种神秘的操作,才能用百行代码完成一个服务器的功能?让我
    超级超级 4 3 0 条评论
  • 终于,Python3.11正式版发布了! 2020年1月1日,Python官方结束了对Python2的维护,这意味着Python2已完全退休,进入了Python3时代。打从进入3版本以来,Python官方已经发布了众多修改分支,现在来到了最新的版本Python3.11。 其实研究界有个不公开的秘密,那就是Python
    書与南柯RD 6 0 0 条评论
  • 据澎湃新闻近日消息,山东省在其最新出版的小学信息技术六年级教材中,加入了Python的内容。在此之前,编程界也一直有传言,称浙江省将对中学信息技术教材进行改动,弃VB(VisualBasic6.0)而选用Python。 事情真的会如程序员们期待的那样发展吗?Python语言又为什么突然受到了格外的重视呢? VB做错了什
    高数次 4 1 0 条评论
  • 模拟键盘操作执行自动化任务,我们常用的有pyautowin等自动化操作模块。但是这些模块有一个很大的缺点,编译的时候非常依赖windows的C语言底层模块。 今天介绍的这个模块叫做keyboard它有一个最大的优点:纯Python原生开发,编译时完全不需要依赖C语言模块。一行命令就能完成安装,非常方便。 1.准备 首
    爱在你身边白羊 6 8 0 条评论
  • 来源:内容由半导体行业观察(ID:icbank)编译自hpcwire,谢谢。 近日,加州大学洛杉矶分校引入了一种新的硬件描述语言PyGears,以实现基于可重用组件和高级Python构造的敏捷芯片设计理念。PyGears是对快速发展的软件世界的回应,这要求硬件设计与可扩展和智能未来的需求保持同步。 据官网介绍PyGea
    文仔230 7 0 0 条评论