Flask:7万+ Star 的 Python Web 框架,轻量到什么程度

Flask 是 Python 生态中最流行的轻量级 Web 框架之一,在 GitHub 上累计获得超过 7 万 Star:

正文顶部截图

Flask 的设计哲学是"只提供你需要的"。它基于 Werkzeug WSGI 工具库和 Jinja2 模板引擎构建,最初只是这两个库的一个简单包装,后来逐步发展成如今被广泛采用的 Web 框架。

和 Django 的"全家桶"路线不同,Flask 不预装 ORM、表单验证、权限管理这些组件。它提供一个干净的起点,工具链完全由开发者自行决定。社区贡献了大量扩展,数据库操作用 Flask-SQLAlchemy,用户认证用 Flask-Login,API 文档用 Flask-RESTX,按需拼装即可。

快速上手

看一个最简单的例子,五行代码启动一个 Web 服务:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello, World!"

保存为 app.py,执行 flask run,访问 http://127.0.0.1:5000/ 就能看到输出。从零到运行,整个过程不到一分钟。

Flask 的路由系统很直观。通过装饰器绑定 URL 和视图函数,支持动态参数:

@app.route("/user/<name>")
def user(name):
    return f"Hello, {name}!"

访问 /user/alice 就会返回 “Hello, alice!”。URL 参数直接作为函数参数传入,不需要额外的配置。

模板渲染方面,Flask 默认集成 Jinja2。在项目目录下创建 templates 文件夹,放入 HTML 模板,视图函数里用 render_template 加载即可:

from flask import render_template

@app.route("/hello/<name>")
def hello(name):
    return render_template("hello.html", name=name)

模板里用 {{ name }} 输出变量,逻辑控制用 {% if %}{% for %},语法和 Python 本身很接近。

README区域截图

适用场景

Flask 的用途比较集中。RESTful API、原型验证、中小型网站、微服务拆分,这些是它的主战场。项目初期不用花时间研究框架约定和目录结构,先把功能跑通,后续再按需引入扩展。

技术栈与维护

Pallets 团队同时维护 Flask 和它所依赖的 Werkzeug、Jinja2 等库,组件之间的兼容性有保障。官方文档覆盖了路由、模板渲染、静态文件服务、错误处理、数据库集成等常用话题,入门门槛较低。

部署方式

Flask 遵循标准 WSGI 协议。开发阶段用内置服务器调试,生产环境搭配 Gunicorn 或 uWSGI,前面挂 Nginx 做反向代理。Docker 部署也顺畅,写好 Dockerfile 构建镜像即可运行。

参与开源

Flask 的贡献门槛不高。Issues 和 PR 流程有清晰的文档指引,可以提交 bug 报告、功能建议或代码贡献,社区整体比较活跃。

sk 的贡献门槛不高。Issues 和 PR 流程有清晰的文档指引,可以提交 bug 报告、功能建议或代码贡献,社区整体比较活跃。

更多推荐