Flask 简介
轻量级、灵活、易扩展的 Python Web 微框架
1. Flask 是什么
-
官方定义:Flask 是一个"微框架(micro-framework)",用于快速构建 Web 应用与 API。
-
核心定位:只保留最核心功能(路由、请求/响应封装、WSGI 抽象),其余能力通过"扩展"按需加载。
-
技术栈:
-
语言:Python(3.8+ 推荐)
-
基础依赖:Werkzeug(WSGI 工具箱)、Jinja2(模板引擎)、Blinker(信号)、itsdangerous(安全签名)
-
-
非功能特点:
-
源码 < 3 万行,学习曲线平缓
-
无 ORM、无表单验证、无身份认证,保持"可插拔"
-
与 Python 生态无缝集成(SQLAlchemy、Celery、Pydantic、Redis...)
-
2. 工作原理与核心组件
| 层级 | 组件 | 作用 |
|---|---|---|
| ① 路由层 | @app.route() |
将 URL 规则绑定到视图函数 |
| ② 请求/响应 | request / Response |
封装 HTTP 报文,提供上下文代理(LocalStack) |
| ③ 上下文 | AppContext / RequestContext |
保证多线程/协程下线程隔离 |
| ④ 模板 | Jinja2 | 服务端渲染 HTML(可替换为 Mako、Tenjin 等) |
| ⑤ WSGI | Werkzeug | 提供开发服务器、中间件、URL 路由分发、调试器 |
请求生命周期

扩展机制
-
蓝图(Blueprint):分模块组织路由
-
扩展(Extension):Flask-SQLAlchemy、Flask-Login、Flask-Caching...
-
信号(Signal):基于 Blinker 的发布/订阅
-
CLI:通过 Click 集成自定义命令 (
flask my-command)
3. 典型应用场景
| 场景 | 说明 | 常用扩展 |
|---|---|---|
| ① 原型验证 / MVP | 5 分钟搭好 RESTful API,快速迭代 | Flask-RESTX / Flask-RESTful |
| ② 微服务 / Service Mesh | 与 Nginx、K8s、Docker 集成,镜像 < 100 MB | gunicorn + gevent |
| ③ 数据可视化后台 | 结合 Pandas、Plotly、ECharts 做轻量级 Dashboard | Flask-Caching、Flask-APScheduler |
| ④ 机器学习模型服务 | 把 scikit-learn、PyTorch 模型封装成 HTTP 接口 | Flask + Gunicorn + Nginx |
| ⑤ 静态站点生成器 | 用 Jinja2 模板批量生成 HTML,再部署到 GitHub Pages | Frozen-Flask |
| ⑥ 企业中间层 | 作为"胶水层"聚合多个后端,统一鉴权、日志、流控 | Flask-Limiter、Flask-JWT-Extended |
4. Hello World 示例
python
# pip install flask
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return {"msg": "Hello Flask!"}
if __name__ == "__main__":
# 开发服务器(热重载、调试器)
app.run(debug=True, host="0.0.0.0", port=5000)

