Flask入门

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)
相关推荐
2501_9445215918 分钟前
Immer 跨端三方库仓颉适配全流程
python·eclipse·django
信誓旦旦的程序猿23 分钟前
【Python量化实战宝典 #26】止损与回撤控制手册:移动止损、最大回撤(Python 可跑)
python·1024程序员节·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
m0_6399069424 分钟前
Linux 操作系统入门:目录结构、服务排查常用命令、Shell 脚本基础
linux·运维·后端
2501_9445215926 分钟前
Deepmerge 跨端三方库仓颉适配全流程
java·python·eclipse·github
Patrick在香港44 分钟前
同一行 strftime,两台机器跑出两种日期
python·datetime·时区·locale·日期处理
2601_967987371 小时前
用Python+OpenCV+YOLO写个游戏脚本:从自动瞄准到自动采集的保姆级教程
python·opencv·yolo·目标检测·游戏自动化
meiying88381 小时前
快递单号批量查询Python脚本:从手动到自动化的完整实现
开发语言·python·自动化
人工智能导论实践课1 小时前
【GUI桌面开发3】PyCharm配置外部工具
ide·python·pycharm
holly就是我1 小时前
AI 编程助手为什么跑偏?用开源 ccglass 看清 Prompt、工具调用和 Token 消耗
人工智能·后端
鸿蒙开发1 小时前
共享 Schema 与 SchemaFactory
前端·后端·harmonyos