·
跳转至

完整目录

第一部分 基础篇

第 1 章 初识 Flask

  • 1.1 搭建开发环境
    • 1.1.1 创建练习项目目录
    • 1.1.2 使用 PDM 管理虚拟环境和依赖
    • 1.1.3 设置 PyPI 镜像源
    • 1.1.4 安装 Flask
    • 1.1.5 集成开发环境 PyCharm
  • 1.2 Hello,Flask!
    • 1.2.1 创建程序实例
    • 1.2.2 注册路由
  • 1.3 开发服务器
    • 1.3.1 Run,Flask,Run!
    • 1.3.2 程序自动发现机制
    • 1.3.3 开启调试模式
    • 1.3.4 使服务器对外可见
    • 1.3.5 改变默认端口
    • 1.3.6 使用 PyCharm 运行服务器
  • 1.4 Flask Shell
  • 1.5 Flask 扩展
  • 1.6 项目配置
  • 1.7 视图、URL 和端点
  • 1.8 Flask 命令
  • 1.9 模板与静态文件
  • 1.10 获取和使用示例程序
  • 1.11 本章小结

第 2 章 Flask 与 HTTP

  • 2.1 请求 - 响应循环
  • 2.2 HTTP 请求
    • 2.2.1 存储请求信息的 request 对象
    • 2.2.2 在 Flask 中处理请求
    • 2.2.3 请求钩子
  • 2.3 HTTP 响应
    • 2.3.1 在 Flask 中生成响应
    • 2.3.2 cookie 和 session 对象
  • 2.4 Flask 上下文
    • 2.4.1 上下文全局变量
    • 2.4.2 推送上下文
    • 2.4.3 上下文钩子
  • 2.5 Web 安全防范
    • 2.5.1 注入攻击
    • 2.5.2 XSS 攻击
    • 2.5.3 CSRF 攻击
  • 2.6 小实践:重定向到上一个页面
    • 2.6.1 获取上一个页面的 URL
    • 2.6.2 对 URL 进行安全验证
  • 2.7 本章小结

第 3 章 模板与静态文件

  • 3.1 模板的基本用法
    • 3.1.1 创建模板
    • 3.1.2 模板语法
    • 3.1.3 渲染模板
  • 3.2 模板的辅助工具
    • 3.2.1 模板上下文
    • 3.2.2 全局对象
    • 3.2.3 过滤器
    • 3.2.4 测试器
    • 3.2.5 模板环境对象
  • 3.3 模板的组织结构
    • 3.3.1 局部模板
    • 3.3.2 宏
    • 3.3.3 模板继承
  • 3.4 静态文件
    • 3.4.1 添加 Favicon
    • 3.4.2 使用 CSS 框架:Bootstrap
    • 3.4.3 JavaScript 和 CSS 中的 Jinja
  • 3.5 消息闪现
    • 3.5.1 在视图函数中发送消息
    • 3.5.2 在模板中渲染消息
  • 3.6 自定义错误页面
  • 3.7 使用 Bootstrap-Flask 简化模板编写
  • 3.8 本章小结

第 4 章 表单

  • 4.1 HTML 表单
  • 4.2 使用 WTForms 和 Flask-WTF 处理表单
    • 4.2.1 定义表单类
    • 4.2.2 输出表单 HTML 代码
    • 4.2.3 在模板中渲染表单
  • 4.3 处理表单数据
    • 4.3.1 提交表单
    • 4.3.2 验证表单数据
    • 4.3.3 在模板中渲染错误消息
    • 4.3.4 设置验证错误消息的语言
  • 4.4 自定义验证器
    • 4.4.1 验证方法
    • 4.4.2 全局验证器
  • 4.5 使用 Bootstrap-Flask 快速渲染表单
    • 4.5.1 渲染表单字段
    • 4.5.2 渲染整个表单
    • 4.5.3 渲染表单行
    • 4.5.4 设置提交按钮的样式
  • 4.6 本章小结

第 5 章 数据库

  • 5.1 数据库分类
    • 5.1.1 SQL
    • 5.1.2 NoSQL
    • 5.1.3 如何选择数据库
  • 5.2 ORM 魔法
  • 5.3 安装和初始化 Flask-SQLAlchemy
  • 5.4 连接数据库服务器
    • 5.4.1 连接到 SQLite
    • 5.4.2 连接到 MySQL
    • 5.4.3 连接到 PostgreSQL
  • 5.5 定义 SQLAlchemy 模型类
    • 5.5.1 定义表名
    • 5.5.2 定义字段
    • 5.5.3 定义 __repr__() 方法
  • 5.6 创建数据库表
  • 5.7 数据库操作
    • 5.7.1 会话
    • 5.7.2 插入新记录
    • 5.7.3 获取记录
    • 5.7.4 过滤记录
    • 5.7.5 更新记录
    • 5.7.6 删除记录
  • 5.8 配置 Python Shell 上下文
  • 5.9 定义关系
    • 5.9.1 一对多
    • 5.9.2 多对一
    • 5.9.3 一对一
    • 5.9.4 多对多
    • 5.9.5 基于只写加载器(Write-only Loader)获取集合关系记录
    • 5.9.6 是否使用外键
  • 5.10 更新数据库表与数据迁移
    • 5.10.1 重新生成表
    • 5.10.2 使用 Flask-Migrate 迁移数据库
    • 5.10.3 开发时是否需要进行迁移
  • 5.11 数据库高级实践
    • 5.11.1 级联操作
    • 5.11.2 事件监听
    • 5.11.3 外键 ON DELETE 级联
  • 5.12 使用 Faker 生成虚拟数据
  • 5.13 小练习:编写一个记事本程序
    • 5.13.1 创建笔记
    • 5.13.2 显示笔记列表
    • 5.13.3 更新笔记
    • 5.13.4 删除笔记
  • 5.14 本章小结

第 6 章 自动化测试

  • 6.1 了解自动化测试
  • 6.2 Flask 测试客户端
  • 6.3 使用 unittest 编写单元测试
    • 6.3.1 Flask 程序的测试固件
    • 6.3.2 为测试创建程序上下文
    • 6.3.3 编写测试用例
    • 6.3.4 运行测试
  • 6.4 测试 Flask 命令
  • 6.5 使用 coverage.py 计算测试覆盖率
    • 6.5.1 基本用法
    • 6.5.2 获取测试覆盖率
    • 6.5.3 使用 pytest-cov 集成 coverage.py
  • 6.6 使用 Ruff 优化代码风格
    • 6.6.1 代码风格检查
    • 6.6.2 代码格式化
  • 6.7 类型标注
  • 6.8 本章小结

第 7 章 常用 Flask 开发技巧

  • 7.1 使用 Flask-Mailman 发送电子邮件
    • 7.1.1 配置 Flask-Mailman
    • 7.1.2 构建邮件数据
    • 7.1.3 发送邮件
    • 7.1.4 发送多封邮件
    • 7.1.5 提供 HTML 格式的邮件正文
    • 7.1.6 使用模板组织邮件正文
    • 7.1.7 异步发送邮件
  • 7.2 使用 AJAX 发送异步请求
    • 7.2.1 认识 AJAX
    • 7.2.2 使用 Fetch API 发送 AJAX 请求
    • 7.2.3 处理 AJAX 请求
    • 7.2.4 处理 AJAX 响应
  • 7.3 使用 Flask-WTF 上传文件
    • 7.3.1 定义上传字段
    • 7.3.2 渲染上传表单
    • 7.3.3 处理上传文件
    • 7.3.4 查看和下载上传文件
    • 7.3.5 上传多个文件
  • 7.4 使用 Flask-CKEditor 集成富文本编辑器
    • 7.4.1 引入 CKEditor JavaScript 资源
    • 7.4.2 定义 CKEditor 编辑器字段并渲染
    • 7.4.3 配置 CKEditor 编辑器
    • 7.4.4 获取编辑器字段数据并渲染
    • 7.4.5 使用 Bleach 进行 HTML 安全清理
    • 7.4.6 上传图片
  • 7.5 使用 CSRFProtect 实现 CSRF 保护
    • 7.5.1 设置 CSRF 令牌
    • 7.5.2 处理 CSRF 错误
  • 7.6 使用 Flask-DebugToolbar 调试程序
  • 7.7 本章小结

第二部分 实战篇

第 8 章 项目组织

  • 8.1 基本项目组织技巧
    • 8.1.1 使用包组织代码
    • 8.1.2 在文件中存储程序配置
    • 8.1.3 注册视图函数到程序实例
    • 8.1.4 使用绝对导入
    • 8.1.5 运行使用包组织的程序
    • 8.1.6 创建子包
  • 8.2 使用蓝本模块化程序
    • 8.2.1 创建蓝本
    • 8.2.2 装配蓝本
    • 8.2.3 注册蓝本
    • 8.2.4 蓝本的路由端点
    • 8.2.5 蓝本静态文件和模板
    • 8.2.6 蓝本嵌套
  • 8.3 组织程序配置
    • 8.3.1 从环境变量中读取配置
    • 8.3.2 使用 python-dotenv 管理环境变量
    • 8.3.3 使用 Python 类组织程序配置
  • 8.4 使用工厂函数创建程序实例
    • 8.4.1 初始化扩展
    • 8.4.2 组织工厂函数
    • 8.4.3 创建程序入口脚本
    • 8.4.4 使用 current_app 获取程序实例
  • 8.5 组织测试
  • 8.6 项目组织架构
    • 8.6.1 功能式架构
    • 8.6.2 分区式架构
    • 8.6.3 如何选择组织架构
  • 8.7 本章小结

第 9 章 程序实例:个人博客

  • 9.1 Web 程序开发流程
    • 9.1.1 程序功能设计
    • 9.1.2 前端页面开发
    • 9.1.3 后端程序开发
    • 9.1.4 部署上线
  • 9.2 编写程序框架
    • 9.2.1 创建数据库模型
    • 9.2.2 邻接列表关系
    • 9.2.3 生成虚拟数据
    • 9.2.4 模板文件
    • 9.2.5 基模板
    • 9.2.6 模板上下文
    • 9.2.7 视图函数
    • 9.2.8 单元测试
  • 9.3 渲染导航链接
  • 9.4 实现 Flash 消息分类
  • 9.5 日期和时间的本地化
    • 9.5.1 存储 UTC 时间
    • 9.5.2 使用 Day.js 渲染日期和时间
    • 9.5.3 渲染不同语言的时间
    • 9.5.4 渲染日期时间
    • 9.5.5 渲染相对时间
  • 9.6 编写博客前台
    • 9.6.1 分页显示文章列表
    • 9.6.2 显示文章正文
    • 9.6.3 文章固定链接
    • 9.6.4 显示分类文章列表
    • 9.6.5 显示评论列表
  • 9.7 文章评论与回复
    • 9.7.1 发送评论提醒邮件
    • 9.7.2 创建评论表单
    • 9.7.3 发表评论
    • 9.7.4 支持回复评论
  • 9.8 网站主题切换
  • 9.9 创建管理员用户
    • 9.9.1 安全存储密码
    • 9.9.2 创建用户命令
  • 9.10 使用 Flask-Login 管理用户认证
    • 9.10.1 获取当前用户
    • 9.10.2 登录表单
    • 9.10.3 登录用户
    • 9.10.4 登出用户
    • 9.10.5 视图保护
    • 9.10.6 在单元测试中认证
  • 9.11 编写博客管理后台
    • 9.11.1 文章管理
    • 9.11.2 评论管理
    • 9.11.3 分类管理
  • 9.12 本章小结

第 10 章 程序实例:图片社交网站

  • 10.1 程序功能与数据库设计
    • 10.1.1 数据库模型与虚拟图片
    • 10.1.2 模板和静态文件
    • 10.1.3 使用 Bootstrap 图标
  • 10.2 用户注册与验证
    • 10.2.1 实现用户注册
    • 10.2.2 使用 JWT 进行邮箱验证
    • 10.2.3 使用装饰器过滤未确认用户
    • 10.2.4 密码重置
  • 10.3 基于用户角色的权限管理
    • 10.3.1 角色与权限模型
    • 10.3.2 设置角色和权限
    • 10.3.3 写入角色和权限
    • 10.3.4 验证用户权限
  • 10.4 使用 Flask-Dropzone 优化文件上传功能
    • 10.4.1 配置 Flask-Dropzone
    • 10.4.2 渲染上传区域
    • 10.4.3 处理并保存上传图片
  • 10.5 使用 Flask-Avatars 处理用户头像
    • 10.5.1 使用默认头像
    • 10.5.2 生成随机头像
  • 10.6 图片展示与管理
    • 10.6.1 在用户主页显示图片列表
    • 10.6.2 图片详情页
    • 10.6.3 上一张和下一张跳转
    • 10.6.4 删除确认模态框
    • 10.6.5 举报图片
    • 10.6.6 图片描述
    • 10.6.7 图片标签
    • 10.6.8 用户资料弹窗
  • 10.7 图片收藏
    • 10.7.1 添加和取消收藏
    • 10.7.2 收藏者和收藏页面
  • 10.8 用户关注
    • 10.8.1 自引用的多对多关系
    • 10.8.2 关注与取消关注
    • 10.8.3 显示关注用户列表
    • 10.8.4 使用 AJAX 在弹窗中执行关注操作
  • 10.9 消息提醒
    • 10.9.1 提醒消息在数据库中的表示
    • 10.9.2 创建提醒
    • 10.9.3 显示和管理提醒
    • 10.9.4 通过轮询实时更新未读计数
  • 10.10 用户资料与账户设置
    • 10.10.1 编辑用户个人资料
    • 10.10.2 自定义头像
    • 10.10.3 更改密码
    • 10.10.4 设置提醒消息开关
    • 10.10.5 将收藏设置为仅自己可见
    • 10.10.6 注销账户
  • 10.11 首页与探索
    • 10.11.1 获取正在关注的用户的图片
    • 10.11.2 使用联结和分组查询获取热门标签
    • 10.11.3 使用数据库通用函数获取随机图片
  • 10.12 使用 Flask-Whooshee 实现全文搜索
    • 10.12.1 创建索引
    • 10.12.2 搜索表单
    • 10.12.3 显示搜索结果
  • 10.13 编写网站后台
    • 10.13.1 用户管理
    • 10.13.2 资源管理
    • 10.13.3 面向管理员的用户资料编辑功能
  • 10.14 使用 Selenium 进行用户界面测试
    • 10.14.1 基本用法
    • 10.14.2 准备测试环境
    • 10.14.3 编写测试代码
  • 10.15 本章小结

第三部分 进阶篇

第 11 章 Web API 开发

  • 11.1 认识 Web API
  • 11.2 资源 URL 和版本设计
    • 11.2.1 多 API 版本的实现
    • 11.2.2 为 API 蓝本禁用 CSRF 保护
    • 11.2.3 设置 API 前缀
    • 11.2.4 设置 API 子域
  • 11.3 使用 HTTP 方法描述操作
    • 11.3.1 快捷路由装饰器
    • 11.3.2 使用类视图编写 API
  • 11.4 使用 JSON 传输资源
    • 11.4.1 获取 JSON 请求
    • 11.4.2 生成 JSON 响应
    • 11.4.3 处理错误响应
  • 11.5 使用 Flask-CORS 添加 CORS 支持
  • 11.6 使用 APIFlask 开发 Web API
    • 11.6.1 基本用法
    • 11.6.2 请求的验证与反序列化
    • 11.6.3 响应的格式化与序列化
    • 11.6.4 资源分页
    • 11.6.5 程序错误处理
    • 11.6.6 基于令牌的 API 认证
  • 11.7 测试 Web API
    • 11.7.1 使用 HTTPie 测试 API
    • 11.7.2 为 API 编写单元测试
  • 11.8 本章小结

第 12 章 性能分析与优化

  • 12.1 程序性能分析
    • 12.1.1 函数性能分析
    • 12.1.2 数据库查询性能分析
  • 12.2 使用 Flask-Caching 配置缓存
    • 12.2.1 缓存视图函数
    • 12.2.2 缓存其他函数
    • 12.2.3 更新缓存
    • 12.2.4 使用 Redis 作为缓存后端
  • 12.3 使用 Flask-Assets 优化静态资源
    • 12.3.1 注册资源集
    • 12.3.2 生成资源集文件
    • 12.3.3 在模板中加载资源集
  • 12.4 本章小结

第 13 章 部署上线

  • 13.1 部署方式
    • 13.1.1 传统部署
    • 13.1.2 容器部署
    • 13.1.3 云部署
    • 13.1.4 静态部署
  • 13.2 基本部署流程
  • 13.3 部署前的准备
    • 13.3.1 更新程序配置
    • 13.3.2 手动导入环境变量
    • 13.3.3 设置迁移工具
    • 13.3.4 记录程序日志
    • 13.3.5 HTTPS 转发
    • 13.3.6 安装 WSGI 服务器
  • 13.4 传统部署:部署到 Linux 服务器
    • 13.4.1 使用 OpenSSH 登录远程主机
    • 13.4.2 安装基础库和工具
    • 13.4.3 安全防护措施
    • 13.4.4 推送代码并初始化程序环境
    • 13.4.5 使用 Gunicorn 运行程序
    • 13.4.6 使用 Nginx 提供反向代理
    • 13.4.7 使用 Supervisor 管理进程
    • 13.4.8 更新部署后的程序
  • 13.5 容器部署:使用 Docker 进行部署
    • 13.5.1 安装 Docker
    • 13.5.2 构建程序镜像
    • 13.5.3 运行和管理容器
    • 13.5.4 配置管理
    • 13.5.5 数据持久化
    • 13.5.6 镜像分发
    • 13.5.7 部署与升级
    • 13.5.8 容器编排
  • 13.6 下一步该做什么
  • 13.7 本章小结

第 14 章 Flask 工作原理与机制解析

  • 14.1 阅读 Flask 源码
    • 14.1.1 获取 Flask 源码
    • 14.1.2 如何阅读源码
  • 14.2 Flask 的设计理念
    • 14.2.1 “微”框架
    • 14.2.2 两个核心依赖
    • 14.2.3 显式程序对象
    • 14.2.4 本地上下文
    • 14.2.5 三种程序状态
    • 14.2.6 丰富的自定义支持
  • 14.3 Flask 与 WSGI
    • 14.3.1 WSGI 程序
    • 14.3.2 WSGI 服务器
    • 14.3.3 中间件
  • 14.4 Flask 的工作流程与机制
    • 14.4.1 Flask 中的请求 - 响应循环
    • 14.4.2 路由系统
    • 14.4.3 本地上下文
    • 14.4.4 请求与响应对象
    • 14.4.5 session
    • 14.4.6 蓝本
    • 14.4.7 模板渲染
  • 14.5 本章小结

附录 Flask 资源