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

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

一百行代码能实现一个简单的网页后端么?答案是可以的,下面我来带大家快速实现一个Flask后端程序。
在学习python中有任何困难不懂可以微信扫描下方CSDN官方认证二维码加入python交流学习
多多交流问题,互帮互助,这里有不错的学习教程和开发工具。

01.整体项目设计

今天给大家写一个后端入门的小程序,要求是尽量简单,有数据交互。所以在这里选用了Flask框架,数据库用了最简单的SQLite。因为要做一个数据展示,所以在这里用了豆瓣电影top250的数据。

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

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

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

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

moiveBase.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表达方式

03.Flask项目逻辑

1).网站的首页

在首页我们计划按照电影排名,有序展示10点电影信息,并且可以点击链接进入电影的详情页。

  • @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。

作为一个IT的过来人,我分享的都是一些自己的学习方法和干货。

最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。

点此免费领取:CSDN大礼包:《python学习路线&全套学习资料》免费分享

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

四、实战案例

五、面试资料



最后,千万别辜负自己当时开始的一腔热血,一起变强大变优秀。

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

  1. python一般做什么游戏好玩_只需要9步100行Python代码就可以实现一个简单又好玩的弹球游戏...

    今天给大家分享一个有趣又好玩的弹球的游戏,一来可以把类的知识融会一下,二来加深对Python的兴趣.你会发现哎呀Python写小游戏还是蛮方便的,蛮有意思的~~ 需要本文源码:私信回复[源码]即可获取 ...

  2. python简单好玩的代码_只需要9步100行Python代码就可以实现一个简单又好玩的弹球游戏...

    今天给大家分享一个有趣又好玩的弹球的游戏,一来可以把类的知识融会一下,二来加深对Python的兴趣.你会发现哎呀Python写小游戏还是蛮方便的,蛮有意思的~~ 需要本文源码:私信回复[源码]即可获取 ...

  3. 100行Python代码,做一个打地鼠小游戏

    游戏画面 首先先进行游戏画面排版, class TopWindow(QWidget):def __init__(self, parent=None):super().__init__(parent)s ...

  4. 7行Python代码,搭建可以识花的机器学习App|视频教程

    你想学Python,却不知如何着手,那你需要一种更加有趣的学习方式. Siraj Raval是一位人工智能领域的编程高手,毕业于哥伦比亚大学,曾任职于 Twilio 和 Meetup,他通过制作教程类 ...

  5. web python识花_7行Python代码,搭建可以识花的机器学习App|视频教程

    你想学Python,却不知如何着手,那你需要一种更加有趣的学习方式. Siraj Raval是一位人工智能领域的编程高手,毕业于哥伦比亚大学,曾任职于 Twilio 和 Meetup,他通过制作教程类 ...

  6. 100行python代码做一个程序_100行python代码实现微信跳一跳辅助程序

    写在前面 分享一下今天下午用python写的"跳一跳"小游戏的辅助程序.之前是准备用树莓派操控一个"机械手指"来代替人的触摸操作,但该方案还在酝酿中,实现了再分 ...

  7. python写一个游戏多少代码-使用50行Python代码从零开始实现一个AI平衡小游戏

    集智导读: 本文会为大家展示机器学习专家 Mike Shi 如何用 50 行 Python 代码创建一个 AI,使用增强学习技术,玩耍一个保持杆子平衡的小游戏.所用环境为标准的 OpenAI Gym, ...

  8. 100个必会的python脚本-100行Python代码实现自动抢火车票(附源码)

    前言 又要过年了,今年你不妨自己写一段代码来抢回家的火车票,是不是很Cool.下面话不多说了,来一起看看详细的介绍吧. 先准备好: 12306网站用户名和密码 chrome浏览器及下载chromedr ...

  9. 50行python游戏代码_使用50行Python代码从零开始实现一个AI平衡小游戏

    使用50行Python代码从零开始实现一个AI平衡小游戏 发布时间:2020-10-23 09:26:14 来源:脚本之家 阅读:74 集智导读: 本文会为大家展示机器学习专家 Mike Shi 如何 ...

最新文章

  1. 地理信息系统控件GIS控件TatukGIS Developer Kernel 下载及介绍
  2. 图论最短距离(Shortest Path)算法动画演示-Dijkstra(迪杰斯特拉) 和 Floyd(弗洛伊德)
  3. Java 线程数据交换控制器Exchange使用实例
  4. python进程池一个进程卡住_python进程池,每个进程都有超时
  5. 造轮子是什么意思_聊聊在阿里工作一年的收获,什么是真正的技术能力?
  6. RabbitMQ学习之Flow Control
  7. 【Adobe Air程序开发】用Adobe Flex3开发AIR应用程序–入门指南
  8. IT不是技术,IT是一个世界
  9. 使用J-link+J-Flash给STM32芯片烧写序列号
  10. 用计算机算桥架的视频,桥架在线计算器介绍
  11. 360全景倒车影像怎么看_倒车注意了!路证人360度全景倒车影像实时显示动态轨迹,轻松倒车泊车...
  12. 用计算机弹九八k谱子,拼音输出法(计算机).ppt
  13. [网络安全课程实验]:基于nmap 的网络扫描和信息分析
  14. F607Za光猫设置拨号及相关技术
  15. Java数组数据类型
  16. ziheng - 测手速游戏
  17. BIT2022年春软件需求工程和UML建模 - 智慧校园数据管理系统 - Final
  18. URP Lit Shader解析(1)
  19. C语言常见问题(五)——字符串
  20. php java优劣_PHP开发和JAVA开发网站的优劣对比

热门文章

  1. 【Centos 使用rpm离线安装 make cmake gcc g++】
  2. 【ZED】从零开始使用ZED相机(二):打开相机+捕获图像
  3. html的li水平居中
  4. SEO优化效果不佳?试试做减法
  5. Fanuc机器人 Karel 编程学习(一)---ROBOGUIDE创建WorkCell
  6. Windows10 切换虚拟桌面的任务栏图标顺序混乱的解决方案
  7. 15位身份证号的校验
  8. 15位和18位身份证号码的结构介绍
  9. Qt如何实现实时鼠标绘制图形
  10. 架构师必备技能之——MySQL数据库表设计