一、Flask 介绍与安装
Flask 是一个使用 Python 实现的 Web 开发微框架,具有丰富的扩展,可以非常方便的继承 Jinja2
、SQLAlchemy
、WTF
等扩展。
哪些公司使用了 Flask
构建 Web 应用?
Flask 安装
pip 安装
在终端下指定使用 Py 3.8 来安装 1.1.2 版本的 Flask。
pip3.8 install flask==1.1.2 复制代码
使用该命令安装时也可以选择性使用以下属性:
- --timeout:设置超时时间
- -i:使用指定的镜像源安装
# 使用清华镜像源安装1.1.2版本的Flask pip3.8 install flask==1.1.2 -i https://pypi.tuna.tsinghua.edu.cn/simple 复制代码
源码安装
使用源码进行安装,进入源码目录下,运行命令
python3 setup.py install 复制代码
安装完成之后可以通过在终端中运行命令 pip3.8 list
或者通过在 Python 代码中导入 Flask 来查看 Flask 版本信息。
二、Flask Quickstart
使用PyCharm创建一个Pure Python项目 flask-quickstart,新增一个 Python 脚本 app.py
from flask import Flask # 创建一个Flask对象/实例 app = Flask(__name__) @app.route('/hallo') def hallo(): return 'Hallo Flask' if __name__ == '__main__': app.run() 复制代码
- __name__:表示Flask应用的主模块或者包的名称,Flask使用该参数来确定应用的位置,以此找到应用中其他文件的位置,如模板、静态资源文件等
- @app.route():装饰器,表示路由配置,用户在浏览器中输入的URI映射到指定的函数
运行该脚本,控制台打印出URL地址
在浏览器中输入控制台打印出的地址
控制台打印出 hallo() 函数返回的字符串,此时 /hallo
就和 hallo()
函数关联起来了
app.py 中的 hallo()
函数称为视图函数,每个视图函数上可以加多个装饰器,既可以有多个 URI
映射到同一个视图函数上.
在 hallo()
函数上添加一个 URI
# 其余代码不变 @app.route('/') @app.route('/hallo') def hallo(): return 'Hallo Flask' # 其余代码不变 复制代码
重新启动脚本,浏览器输入 127.0.0.1:5000
"/" 同样也可以映射到hallo()视图函数上
MTV 模型
在app.py同级目录下新建一个 templates 文件夹,增加 hallo.html 页面
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"/> <title>Index</title> </head> <body> <h1>{{info.message}}</h1> </body> </html> 复制代码
修改app.py
from flask import render_template # 其余代码不变 @app.route('/hallo') @app.route('/') def hallo(): info = { 'message': "这是存在message变量中的信息" } return render_template('index.html', info=info) 复制代码
Flask 的 MTV 模型
- V 表示视图 View:负责业务逻辑,对应项目中的视图函数
- T 表示模板 Template:负责如何把页面展示给用户
- M 表示模型 Model:与数据库表对应的类
浏览器器发送的请求首先会根据URI地址找到对应的视图函数,视图函数中会处理请求包括获取对进行进行判断,获取请求中的参数,之后会与Model层进行交互,通过ORM框架对数据进行增删改查,并将操作结果保存,Template中会通过模板语法处理视图函数中的数据,之后再有视图函数将Template返回给浏览器进行渲染,最终呈现给用户
视图函数是请求处理的核心,所以视图层是一定存在的,可以没有 Template 或者 Model。
实现 MTV 三层架构的第三方库:
- 模型Model
- Flask-PyMongo/Flask-SQLAlchemy
- 视图View
- Flask-WTF/Flask-Uploads/
- 模板Template
- Jinja2
三、Flask 内置服务器
Flask 推荐的启动方式
flask 1.0 之后就不再推荐使用 main 函数的方式启动 flask 应用了,而是通过设置环境变量运行启动命令的方式来启动Flask应用
# 设置环境变量 set/export FLASK_APP = app.py # 启动应用 flask run -h 0.0.0.0 -p 8080 # 这条命令也可以设置host和port flask run --host=0.0.0.0 --port=8080 # 查看更多命令 flask run --help 复制代码
IDEA 配置 Flask 应用启动方式
Flask 应用开启 Debug 模式
Flask应用开启 Debug 模式非常简单,只要通过命令将 FLASK_ENV
设置为 development
即可。
set/export FLASK_ENV=development flask run 复制代码
开启调试模式之后,修改代码保存后服务器会自动重启
四、Flask 的扩展
由于 Flask 是一个 microframework,除了核心功能外其他模块都需要使用第三方扩展,如 ORM 框架、表单等,这些都可以通过官方网站查找到所需要的第三方扩展。