
Flask从入门到进阶
Python Web开发工程化实践
作品简介
这是一本为各水平层次的Python Web开发者提供完整Flask Web开发知识体系的书,由Flask官方团队成员撰写,获得Flask之父Armin Ronacher的高度认可和推荐。
本书内容系统全面,从Flask的基础知识到完整的Flask项目实战,从Flask Web API开发到Flask应用的性能优化,从Flask项目的生产部署到Flask的源码解析,本书提供了完整的Python Web工程化学习路径。
本书实战案例丰富,基础篇的大部分章节都针对相应的知识点提供了完整可运行的示例程序,实战篇则通过2个较为完整的Flask项目讲解了Flask项目的组织方式和技巧,以及Flask开发中各类功能的实现方法和技巧。
内容紧跟技术发展,书中的代码和示例程序均基于Flask新发布的稳定版3.x编写,书中涉及的其他Python包和前端库也全部采用当前的新版本,确保本书在未来较长一段时间内仍可保持先进性和实用性。
本书共14章,分为三部分:
基础篇(第1–7章):通过丰富的示例讲解了Flask的核心基础与进阶技巧,为后续学习打下坚实基础。
实战篇(第8–10章):通过两个完整项目案例,将Flask的知识点融会贯通,带领读者完成从0到1的开发过程。
进阶篇(第11–14章):涵盖基于Flask与APIFlask的Web API开发、性能优化与生产部署,并深入剖析Flask的源码实现与核心机制。
本书不仅提供系统的知识讲解和完整的项目源码,还提供丰富的在线资源和活跃的读者社群。只要你了解Python的基本语法,无论你是零基础Web开发爱好者,还是想从事Python Web开发的后端工程师、运维工程师、爬虫工程师、数据科学工程师等,抑或是想要从Django、FastAPI等其他Python Web框架转向Flask的Python工程师,都能从中获益匪浅。掌握本书,你将不再畏惧任何复杂的Web开发需求,在AI时代构筑自己坚不可摧的核心竞争力。
李辉(Grey Li),Flask与APIFlask的维护者,Flask官方开发团队(Pallets Projects)成员,HelloFlask与代码厨房社区(CodeKitchen Community)的创建者,微软Python方向最有价值专家(Microsoft MVP)。现就职于戴尔中国卓越研发集团,担任首席软件工程师。
他对Flask有非常深入的研究,熟悉其源代码,拥有丰富的项目实践经验。热衷于开源软件的应用与推广,曾为包括Flask在内的多个开源项目贡献大量代码,并多次在PyCon China、PyCon US、COSCUP、COSCon、CommunityOverCode等技术大会上发表演讲。
你可以在GitHub(github.com/greyli)上查看他的开源项目,或访问他的个人网站(greyli.com)了解更多信息。
作品目录
Prologue 序
前言 Preface
基础篇
Chapter 1 第1章 初识Flask
1.1 搭建开发环境
1.2 Hello,Flask!
1.3 开发服务器
1.4 Flask Shell
1.5 Flask扩展
1.6 项目配置
1.7 视图、URL和端点
1.8 Flask命令
1.9 模板与静态文件
1.10 获取和使用示例程序
1.11 本章小结
Chapter 2 第2章 Flask与HTTP
2.1 请求-响应循环
2.2 HTTP请求
2.3 HTTP响应
2.4 Flask上下文
2.5 Web安全防范
2.6 小实践:重定向到上一个页面
2.7 本章小结
Chapter 3 第3章 模板与静态文件
3.1 模板的基本用法
3.2 模板的辅助工具
3.3 模板的组织结构
3.4 静态文件
3.5 消息闪现
3.6 自定义错误页面
3.7 使用Bootstrap-Flask简化模板编写
3.8 本章小结
Chapter 4 第4章 表单
4.1 HTML表单
4.2 使用WTForms和Flask-WTF处理表单
4.3 处理表单数据
4.4 自定义验证器
4.5 使用Bootstrap-Flask快速渲染表单
4.6 本章小结
Chapter 5 第5章 数据库
5.1 数据库分类
5.2 ORM魔法
5.3 安装和初始化Flask-SQLAlchemy
5.4 连接数据库服务器
5.5 定义SQLAlchemy模型类
5.6 创建数据库表
5.7 数据库操作
5.8 配置Python Shell上下文
5.9 定义关系
5.10 更新数据库表与数据迁移
5.11 数据库高级实践
5.12 使用Faker生成虚拟数据
5.13 小练习:编写一个记事本程序
5.14 本章小结
Chapter 6 第6章 自动化测试
6.1 了解自动化测试
6.2 Flask测试客户端
6.3 使用unittest编写单元测试
6.4 测试Flask命令
6.5 使用coverage.py计算测试覆盖率
6.6 使用Ruff优化代码风格
6.7 类型标注
6.8 本章小结
Chapter 7 第7章 常用Flask开发技巧
7.1 使用Flask-Mailman发送电子邮件
7.2 使用AJAX发送异步请求
7.3 使用Flask-WTF上传文件
7.4 使用Flask-CKEditor集成富文本编辑器
7.5 使用CSRFProtect实现CSRF保护
7.6 使用Flask-DebugToolbar调试程序
7.7 本章小结
实战篇
Chapter 8 第8章 项目组织
8.1 基本项目组织技巧
8.2 使用蓝本模块化程序
8.3 组织程序配置
8.4 使用工厂函数创建程序实例
8.5 组织测试
8.6 项目组织架构
8.7 本章小结
Chapter 9 第9章 程序实例:个人博客
9.1 Web程序开发流程
9.2 编写程序框架
9.3 渲染导航链接
9.4 实现Flash消息分类
9.5 日期和时间的本地化
9.6 编写博客前台
9.7 文章评论与回复
9.8 网站主题切换
9.9 创建管理员用户
9.10 使用Flask-Login管理用户认证
9.11 编写博客管理后台
9.12 本章小结
Chapter 10 第10章 程序实例:图片社交网站
10.1 程序功能与数据库设计
10.2 用户注册与验证
10.3 基于用户角色的权限管理
10.4 使用Flask-Dropzone优化文件上传功能
10.5 使用Flask-Avatars处理用户头像
10.6 图片展示与管理
10.7 图片收藏
10.8 用户关注
10.9 消息提醒
10.10 用户资料与账户设置
10.11 首页与探索
10.12 使用Flask-Whooshee实现全文搜索
10.13 编写网站后台
10.14 使用Selenium进行用户界面测试
10.15 本章小结
进阶篇
Chapter 11 第11章 Web API开发
11.1 认识Web API
11.2 资源URL和版本设计
11.3 使用HTTP方法描述操作
11.4 使用JSON传输资源
11.5 使用Flask-CORS添加CORS支持
11.6 使用APIFlask开发Web API
11.7 测试Web API
11.8 本章小结
Chapter 12 第12章 性能分析与优化
12.1 程序性能分析
12.2 使用Flask-Caching配置缓存
12.3 使用Flask-Assets优化静态资源
12.4 本章小结
Chapter 13 第13章 部署上线
13.1 部署方式
13.2 基本部署流程
13.3 部署前的准备
13.4 传统部署:部署到Linux服务器
13.5 容器部署:使用Docker进行部署
13.6 下一步该做什么
13.7 本章小结
Chapter 14 第14章 Flask工作原理与机制解析
14.1 阅读Flask源码
14.2 Flask的设计理念
14.3 Flask与WSGI
14.4 Flask的工作流程与机制
14.5 本章小结
附录 Appendix Flask资源