Flask 简介
Flask 简介 Flask 是一个轻量级的 Python Web 应用框架,由 Pallets 组织开发维护。 它以简单灵活著称,让你能够快速上手构建 Web 应用,同时具备扩展到复杂项目的能力。 Flask 是基于
Flask 是一个轻量级的 Python Web 应用框架,由 Pallets 组织开发维护。
它以简单灵活著称,让你能够快速上手构建 Web 应用,同时具备扩展到复杂项目的能力。

Flask 是基于 Python 开发的微型 Web 框架,被称作微框架,核心原因是本身不绑定任何专用工具与依赖库,原生不内置数据库抽象层、表单验证等通用 Web 组件。
Flask 具备良好的扩展支持能力,可按需额外加装功能插件;目前已有 ORM 对象关系映射、表单校验、文件上传、开放认证及各类配套开发工具的成熟扩展,能按需补齐项目所需功能。
Flask 是什么
Flask 是一个 WSGI(Web Server Gateway Interface) Web 应用框架。
WSGI 是 Python 定义的一套标准接口,规定了 Web 服务器如何与 Python Web 应用通信,你可以把它理解为 Python Web 世界的「通用插座」。
Flask 最初只是 Werkzeug 和 Jinja 的一个简单包装层,如今已发展成为 Python 社区最受欢迎的 Web 框架之一。
核心依赖
安装 Flask 时,以下依赖会自动安装,它们各司其职:
| 依赖库 | 作用 | 你在什么时候会接触到它 |
|---|---|---|
| Werkzeug | WSGI 工具库,负责 HTTP 请求解析、响应封装、URL 路由匹配 | 处理请求(request)、返回响应(response)时,底层都是 Werkzeug 在工作 |
| Jinja2 | 模板引擎,负责将数据渲染为 HTML 页面 | 使用 render_template() 生成动态页面时 |
| Click | 命令行工具框架,提供 flask 终端命令 | 运行 flask run、自定义 CLI 命令时 |
| itsdangerous | 数据签名库,确保数据完整性不被篡改 | Session Cookie 的签名验证 |
| blinker | 信号机制,允许在特定事件发生时触发回调 | 想在请求开始/结束时执行自定义逻辑 |
理解记忆:把 Flask 想象成一辆车,Werkzeug 是发动机(核心动力),Jinja2 是内饰(用户看到的部分),Click 是方向盘(你操控的方式),itsdangerous 是安全带(安全保障)。
Flask 的设计哲学
Flask 的两个核心理念决定了它的使用方式。
微框架,不微能力
Flask 核心非常精简,但通过丰富的扩展生态,几乎可以满足任何需求。
它不强制你使用特定的数据库、表单库或项目结构——开发者自己选择最适合的工具。
这种设计意味着:小型项目不会被框架拖累,大型项目可以按需组装。
显式优于隐式
与一些「全家桶」框架不同,Flask 不会偷偷帮你做很多事。
每个功能都需要你明确地引入和配置,这在初学时可能需要多写几行代码,但换来的是对项目的完全掌控。
如果你之前接触过 Django,可能会觉得 Flask「什么都要自己来」。这恰恰是 Flask 的设计意图:让你清楚地知道每个功能从何而来。
Flask 特点
轻量级和简洁:Flask 是一个微框架,提供了最基本的功能,不强制使用任何特定的工具或库。它的核心是简单而灵活的,允许开发者根据需要添加功能。
灵活性:Flask 提供了基本的框架结构,但没有强制性的项目布局或组件,开发者可以根据自己的需求自定义。
可扩展性:Flask 的设计允许你通过插件和扩展来添加功能。许多常见的功能,如表单处理、数据库交互和用户认证,都可以通过社区提供的扩展来实现。
内置开发服务器:Flask 内置了一个开发服务器,方便在本地进行调试和测试。
RESTful 支持:Flask 支持 RESTful API 的开发,适合构建现代的 Web 服务和应用程序。
如果你之前接触过 Django,可能会觉得 Flask「什么都要自己来」。这恰恰是 Flask 的设计意图:让你清楚地知道每个功能从何而来,拥有对项目的完全掌控。
Flask 适用场景
小型项目:对于小型的个人项目或初创项目,Flask 的简单性和灵活性可以快速启动和迭代。
原型开发:在产品开发的早期阶段,Flask 可以用来快速构建原型,验证概念和用户界面。
微服务:在微服务架构中,Flask 可以用来构建独立的、轻量级的服务组件。
API 开发:Flask 非常适合开发 RESTful API,因为它的路由系统简单明了,可以轻松地定义 API 端点。
教育和学习:由于其易用性,Flask 是学习 Web 开发和 Python 编程的优秀工具。
内部工具:Flask 可以用于开发公司内部使用的工具或仪表板,这些工具通常不需要复杂的用户界面。
插件或扩展:Flask 可以作为其他大型框架的插件或扩展,提供特定的功能。
定制 Web 应用:对于需要高度定制的 Web 应用,Flask 提供了足够的灵活性来满足特定需求。
数据可视化:Flask 可以与数据可视化库(如 Bokeh 或 Plotly)结合使用,创建交互式的数据可视化 Web 应用。
科学计算和数据分析:Flask 可以与科学计算库(如 NumPy、Pandas)结合,用于开发数据分析和科学计算的 Web 应用。
轻量级 CMS:Flask 可以用来构建轻量级的内容管理系统,尤其是当需要高度定制化时。
Web Scraping:Flask 可以作为 Web Scraping 项目的后端,处理数据抓取和 API 请求。
Flask 的组成
/Users/tianqixin/runoob-test/runoob-article/2026-05-13/images/flask-architecture.svgFlask 应用实例:Flask 的核心是应用实例,通过创建 Flask 对象来初始化应用。
路由和视图函数:路由将 URL 映射到视图函数,视图函数处理请求并返回响应。
模板系统:Flask 使用 Jinja2 模板引擎来渲染 HTML 页面,将数据动态插入到页面中。
请求和响应:Flask 处理 HTTP 请求并生成响应,支持多种 HTTP 方法(如 GET、POST)。
技术栈全景图
下图展示了 Flask 应用的典型分层结构,帮助你从整体上理解各组件的位置: