Learning Path
浏览 Flask 相关教程与章节。
PHP、Node.js、Java Web、Python Web 框架、API 与服务端开发。
教程
54
Flask 教程 Flask 是一个用 Python 编写的轻量级 Web 应用框架。 Flask 基于 WSGI(Web Server Gateway Interface)和 Jinja2 模板引擎,旨在帮助开发者快速、简便地创建 Web 应用。 Flask 让我们用 Python 快速写出网站、接口、后台服务。。 Flask 适合小项目、API 接口、微服务。 谁适合阅读本教程? 本教程适合有 Python 基础的开发者..
Flask 应用对象 API Flask 类是整个框架的核心,它作为 WSGI 应用运行,并集中管理路由、模板、配置、钩子等所有功能。 创建方式:app = Flask(__name__) 构造函数参数 以下是创建 Flask 实例时可以传递的全部参数: 参数 类型 默认值 说明 import_name str 必填 应用模块/包名,Flask 用..
Flask Application Globals - g 对象 API g 是一个请求级别的全局命名空间,用于在同一请求的多个函数之间共享数据。 通过 from flask import g 导入,仅在应用上下文活跃时可用。 g 对象说明 特性 说明 类型 flask.ctx._AppCtxGlobals 实例 生命周期 随应用上下文创建,随应用上下..
Flask 基本概念 上一个章节我们已经学会了如何创建第一个 Flask 应用,本章节我们将来详细了解 Flask 的一些基本概念。 了解 Flask 的基本概念对于开发高效的 Web 应用非常重要。 以下是 Flask 的主要基本概念的详细解析: 路由:路由是 URL 到 Python 函数的映射。Flask 允许你定义路由,这样当特定的 URL 被访问时,就会调用相应的函数。 视图函数:视图函数是处理请求并返回响应的 Pyt..
打包上线 — 部署到 Railway 本章你将学会应用工厂模式、生产环境配置,并用 Railway 将 Flask 博客部署上线。 应用工厂模式 create_app() 到目前为止,app.py 中直接创建了 app = Flask(__name__),这在开发时够用,但有几个问题: 测试时无法创建独立的 app 实例 无法按环境(开发/测试/生产)切换不同配置 扩展初始化与 app 实例紧耦合 应用工厂模式 解决了这些问..
收藏功能与后台管理 本章你将学会用多对多关系实现收藏功能,并用 Flask-Admin 快速搭建后台管理。 多对多关系设计 收藏功能的需求:一个用户可以收藏多篇文章,一篇文章可以被多个用户收藏。 在 SQLAlchemy 中,多对多关系通过关联表(Association Table)实现。 实例 [mycode4 type='python'] # 文件路径:models.py 新增关联表和修改 Post ..
Jinja2 模板 — 渲染 HTML 页面 本章你将学会用 Jinja2 模板引擎渲染完整的 HTML 页面,抽取公共布局。 从字符串到模板 上一章视图函数直接返回字符串,里行嵌 HTML 标签,无法复用、难以维护。 render_template() 是 Flask 渲染模板的入口:它加载 HTML 文件、注入变量、返回完整的 HTML 响应。 实例 [mycode4 type='python'] #..
Flask-Login — 用户注册、登录、登出 本章你将学会用 Flask-Login 实现 Session 用户认证,这是 Flask Web 开发最重要的安全保障。 Flask-Login 是什么? Web 应用的 HTTP 请求本质上是无状态的——服务器不会自动记住你是谁。 Flask-Login 通过 Session 机制实现用户状态的维护:登录后服务器在 Session 中存入用户 ID,后续请求自动识别当前用户。 ..
Flask-Migrate — 数据库迁移 本章你将学会用 Flask-Migrate 安全地管理数据库结构变更,并理解与 Django migration 的对应关系。 为什么不能一直用 db.create_all()? db.create_all() 有两个致命缺陷: 只在表不存在时创建。修改模型(如新增字段),已存在的表不会更新 不保留变更历史。无法回滚到之前的数据库状态 数据库迁移 就像数据库的 Git——每次结构变..
Flask Web 应用 本章带你从零开始,用 Flask 创建第一个 Web 应用,理解微框架的设计哲学。 Flask 与 Django 的定位差异 Django 是「大而全」的全栈框架,自带 ORM、模板引擎、管理后台、用户认证、表单处理等。 Flask 是微框架——核心极简,只提供路由和模板渲染,其他功能通过扩展按需添加。 特性DjangoFlask 设计哲学开箱即用(电池全包)微框架,按需扩展 ORM内置 Djang..
关键词搜索与分页 本章你将学会用 SQLAlchemy 实现联合搜索,并用 Flask-SQLAlchemy 内置分页功能优化列表页。 ilike — 大小写不敏感搜索 SQLAlchemy 的 ilike 方法实现了大小写不敏感的模糊匹配。 它对应 SQL 的 LIKE 操作符,但忽略大小写。 实例 [mycode4 type='python'] # 单字段搜索 posts = Post.query.f..
Flask-SQLAlchemy — 设计数据库模型 本章你将学会用 Flask-SQLAlchemy 定义数据模型,创建 SQLite 数据库表,并插入测试数据。 为什么要用 ORM? 直接写 SQL 语句操作数据库繁琐且容易出错。 ORM(对象关系映射) 让你用 Python 类来定义表结构,用 Python 方法操作数据。 Flask-SQLAlchemy 是 SQLAlchemy 的 Flask 集成版,封装了常见操作,配..
视图函数 — 渲染文章列表与详情页 本章你将学会用视图函数从数据库查询数据,渲染首页和详情页,并用 Blueprint 拆分路由。 视图函数的职责 Flask 视图函数的职责与 Django 一致:接收请求 → 查询数据 → 渲染模板。 实例 [mycode4 type='python'] # 文件路径:app.py from flask import Flask, render_template fro..
表单处理 — Flask-WTF 本章你将学会用 Flask-WTF 规范化处理表单:定义表单类、自动 CSRF 保护、字段校验与错误提示。 为什么要用 Flask-WTF? 上一章的注册和登录表单是手写的:手动从 request.form.get() 取值、手动校验、手动显示错误。 Flask-WTF 基于 WTForms 为 Flask 封装,提供: 表单类定义,字段 + 校验规则集中管理 自动 CSRF 保护 模板中渲染..
Flask Blueprint 蓝图对象 API Blueprint 用于将应用拆分为可复用的模块,每个蓝图可以有自己的路由、模板、静态文件和钩子。 创建方式:bp = Blueprint('auth', __name__) 构造函数参数 参数 类型 默认值 说明 name str 必填 蓝图名称,用于 url_for 中的 e..
蓝图(Blueprint) 当应用只有一个文件时,所有路由写在一起还没问题。 但随着功能增长——用户模块、文章模块、管理后台——代码会变得难以维护。 Blueprint(蓝图)就是 Flask 提供的模块化解决方案,让你将应用拆分为独立的功能单元。 为什么需要蓝图 蓝图解决的核心问题: 代码组织:将相关的路由、模板、静态文件归为一组 复用性:同一个蓝图可以注册到不同应用,或注册多次(加不同前缀) 团队协作:不同开发者负..
Flask 类视图 API Flask 提供了两种类视图,让你用面向对象的方式组织视图逻辑。 View 是最基础的类视图,MethodView 按 HTTP 方法自动分发。 View 基类 属性/方法 说明 methods 类属性,视图接受的 HTTP 方法列表。默认 None(使用 add_url_rule 的默认值) decorators 类属性,..
Flask 命令行 API Flask 基于 Click 构建了命令行工具。通过 flask 命令运行应用和管理任务。 所有 CLI 类都在 flask.cli 模块中。 FlaskGroup Flask 的主命令组。通过 flask 命令使用。 参数 说明 add_default_commands=True 是否添加 run、shell、routes 等默认命令 ..
Flask Config 配置类 API Config 是一个字典子类,用于管理 Flask 应用的所有配置项。 通过 app.config 访问,支持从多种来源加载配置。 Config 类方法 方法 签名 说明 from_pyfile (filename, silent=False) 从 Python 文件加载配置。silent=True 时忽略文件不存在错误 ..
Flask 配置管理 任何应用都需要配置——数据库地址、密钥、调试模式开关等。 Flask 提供了灵活的配置系统,支持从多种来源加载配置,满足开发和生产的不同需求。 Config 对象基础 Flask 应用的配置存储在 app.config 中,它像一个字典,可以用键名读写任何配置值: 实例 [mycode4 type='python'] from flask import Flask app = Fla..
Flask 数据库集成 大多数 Web 应用都需要持久化存储数据。 本章使用 Python 内置的 SQLite 数据库,展示如何在 Flask 中集成数据库,无需安装额外依赖。 SQLite 快速入门 SQLite 是一个轻量级数据库,数据存储在一个文件中,Python 标准库自带支持。 它是学习和原型开发的最佳选择——无需安装数据库服务器,无需配置。 实例 [mycode4 type='python']..
Flask 部署 开发完成后,需要将 Flask 应用部署到生产环境,让真实用户能够访问。 本章介绍从开发到生产的关键步骤和注意事项。 开发服务器 vs 生产服务器 重要:Flask 内置的开发服务器(flask run)仅适用于开发环境。它不具备生产环境所需的安全性、稳定性和性能。生产环境必须使用专业的 WSGI 服务器。 特性 Flask 开发服务器 生产 WSGI 服务器(Gunicorn/..
Flask 错误处理 Flask 提供了灵活的错误处理机制,可以捕获并处理应用中的各种错误。 优秀的错误处理不只是「不出 Bug」,更是当 Bug 发生时,给用户一个友好的体验。 本章介绍 Flask 中如何自定义错误页面和管理日志。 自定义错误页面 默认情况下,Flask 对 404 等错误会显示简单的黑底白字页面。 使用 @app.errorhandler 装饰器可以为特定 HTTP 状态码定制错误页面: 实例 [myc..
Flask 表单处理 在 Flask 中,表单处理是构建 Web 应用时一个常见的需求。处理表单数据涉及到接收、验证和处理用户提交的表单。Flask 提供了基本的表单处理功能,但通常结合 Flask-WTF 扩展来简化表单操作和验证。 基本表单处理:使用 request.form 获取表单数据。使用 Flask-WTF:结合 WTForms 进行表单处理和验证,简化表单操作。表单验证:使用验证器确保表单数据的有效性。文件上传:处理文件..