Python Flask框架
一、简介
Flask是一个基于Python的Web开发框架,它以灵活、微框架著称,Flask本身不具备太多功能,但是通过丰富的第三方插件,可以轻松地应对现实开发中复杂的需求。
学习Flask框架,我们可以开发一个服务器,与前端进行交互
Flask有3个主要依赖:路由、调试和Web服务器网关接口(WSGI,Web server gateway interface)子系统由Werkzeug提供;模板系统由Jinja2提供;命令行集成由Click提供。这些依赖全都是Flask的开发者Armin Ronacher开发的。
二、学习资源推荐
Flask文档
- 英文文档:https://flask.palletsprojects.com/en/2.3.x/
- 中文文档:https://dormousehole.readthedocs.io/en/latest/
- Flask Web开发入门:https://www.bookstack.cn/read/head-first-flask/chapter02-README.md

三、环境搭建
1.python环境
读者可以先查看下计算机中现有的Python版本,按照系统来分,可以用以下方式查看:
- Windows系统:按Win+R快捷键,输入cmd,按Enter键,在打开的命令行终端输入python,即可看到现有的Python版本,如图所示。

从图可以看到Windows系统安装的Python版本是3.10.2,读者可以查看下自己的计算机上安装的Python版本,建议最好安装python3.6以上的版本。
可以到官网:https://www.python.org/下载最新版本的Python,下载后直接安装即可。
- Mac系统:打开终端,输入python3,然后按Enter键即可查看
2.安装Flask库
安装Flask 非常简单,只要在系统的终端软件中输入以下命令,然后按Enter键即可安装。
$ pip install flask
3.开发软件
许多软件都可以用来开发Flask项目,如Sublime Text、Visual Studio Code等,但是最专业的软件还是PyCharm。PyCharm是一个集成开发环境(integrated development environment,简称IDE),它提供了许多方便快捷的功能,如断点调试、版本控制等
PyCharm是JetBrains公司出品的一款专门针对Python编程的软件,它有两大版本:一个是PyCharm Professional,即专业版;另一个是PyCharm Community,即社区版,这两大版本的主要区别如下。
- PyCharm Professional:功能最全,适合开发任何类型的Python程序,包括做一些前端项目开发,但是需要收费。
- PyCharm Community:适合开发爬虫、数据分析、GUI等纯Python程序。对Python Web(如Flask和Django等)开发不够友好,没有足够的代码提示。好处是开源免费。
我们需要开发Flask项目,所以选择PyCharm Professional版本。关于它的收费问题,如果读者是学生,可以用学校提供的教育邮箱账号(一般以edu.cn结尾)去申请免费授权(申请网址: https://www.jetbrains.com/community/education/#students)。
如果读者是企业开发者,可以跟公司申请购买正版授权。如果您既不是学生又不想购买正版PyCharm Professional版本,则可以退而求其次选择PyCharm Community版本,也完全可以学习本书的内容,只是一些代码提示没有那么智能(PyCharm Professional有30天试用期)。
四、应用的基本结构
1.初始化
所有Flask应用都必须创建一个应用实例。Web服务器使用一种名为Web服务器网关接口(WSGI,Web server gateway interface,读作“wiz-ghee”)的协议,把接收自客户端的所有请求都转交给这个对象处理。应用实例是Flask类的对象
from flask import Flask
app = Flask(__name__)
Flask类的构造函数只有一个必须指定的参数,即应用主模块或包的名称。在大多数应用中,Python的__name__变量就是所需的值。
Flask用_name_参数确定应用的位置,进而找到应用中其他文件的位置,例如图像和模板
2.路由与视图函数
客户端(例如Web浏览器)把请求发送给Web服务器,Web服务器再把请求发送给Flask应用实例。应用实例需要知道对每个URL的请求要运行哪些代码,所以保存了一个URL到Python函数的映射关系。处理URL和函数之间关系的程序称为路由。
在Flask应用中定义路由的最简便方式,是使用应用实例提供的app.route装饰器。下面的例子说明了如何使用这个装饰器声明路由:
@app.route('/')
def index():
return 'Hello World!'
装饰器是Python语言的标准特性。惯常用法是把函数注册为事件处理程序,在特定事件发生时调用。
index()这样处理入站请求的函数称为视图函数。如果应用部署在域名为www.example.com的服务器上,在浏览器中访问http://www.example.com后,会触发服务器执行index()函数。这个函数的返回值称为响应,是客户端接收到的内容。如果客户端是Web浏览器,响应就是显示给用户查看的文档。视图函数返回的响应可以是包含HTML的简单字符串。
3.一个完整的应用
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return '<h1>Hello World!</h1>'
4.定义URL
绝大部分网站都不可能只有首页一个页面,以一个最简单的博客网站为例,博客页面相关的有博客列表、博客详情等,用户页面相关的有注册、登录、个人中心等。
所以在制作网站时,需要定义许多不同的URL来满足不同页面的访问需求,而URL总体上来讲又分为两种,第一种是无参数的URL,第二种是有参数的URL,下面分别进行讲解这两种URL的定义。
定义无参数的URL
无参数URL是指在URL定义的过程中,不需要定义参数。这里以个人中心为例,如定义个人中心的URL为/profile,可以使用以下代码实现。
@app.route('/profile')
def profile():
return '这是个人中心'
定义有参数的URL
有些时候,在访问某个URL时需要携带一些参数。如获取博客详情时,需要把博客的id传过去,那么博客详情的URL可能为/blog/13,其中13为博客的id。假如获取第10页的博客列表,那么博客列表的URL可能为/blog/list/10,其中10为页码。
在Flask中,如果URL中携带了参数,那么视图函数也必须定义相应的形参来接收URL中的参数。这里以博客详情的URL为例,示例代码如下:
@app.route("/blog/<blog_id>")
def blog_detail(blog_id):
return "您查找的博客id为:"%blog_id
通过以上代码可以看到,URL中多了一对尖括号,并且尖括号中多了一个blog_id,这个blog_id就是参数。然后在视图函数blog_detail中,也相应定义了一个blog_id的形参,当浏览器访问这个URL时,Flask接收到请求后,会自动解析URL中的参数blog_id,把它传给视图函数blog_detail,在视图函数中,开发者就可以根据blog_id从数据库中查找到具体的博客数据返回给浏览器。
URL中的参数类型

这里着重讲解参数类型any的使用。例如,现在要实现一个获取某个分类的博客列表,但是博客分类只能是python、flask、django之一,用any就可以轻松实现。
@app.route("/blog/list/<any(python,flask,django):category>"<

最低0.47元/天 解锁文章
1161

被折叠的 条评论
为什么被折叠?



