《Flask Web开发实战入门、进阶与原理解析》是2018年机械工业版社出版的图书,作者是李辉。
基本介绍
- 书名Flask Web开发实战入门、进阶与原理解析
- 作者李辉
- ISBN9787111606598
- 类别计算机/Web开发
- 页数704
- 定价129
- 出版社机械工业出版社
- 出版时间2018-8
- 装帧平装
- 开本16
内容简介
这是一本面向Python程式设计师的,全面介绍Python Web框架Flask的书。
· 国内首本Flask着作,在内容上涵盖完整的Flask Web开发学习路径,在实践上包含完整的Flask Web程式开发流程。兼容Python2 .7和Python3.6。
· 内容最新,基于Flask 1.0.2版本,所有的Python库、前端框架和JavaScript库均使用最新版本。
· 内容全面,除了基础知识,还包含Web API、全文搜寻、国际化和本地化、第三方登录、AJAX、WebSocket、源码分析、扩展开发等实用内容。
· 实战性强,包含8个示例程式,5个实战项目和1个Flask扩展。实战项目包括留言板、个人部落格、图片社交网站、待办事项程式和聊天室,分别对应不同的知识点,难度递增。
· 5个实战项目的Git标籤经过精心设定,每个标籤都对应新增的某个程式功能。
· 全书所有章节均经过精心设计和编排,力求满足不同水平读者的需要,并且让读者可以循序渐进的掌握Flask开发知识和技巧。
· 通过丰富的图表和代码示例讲解複杂知识点,儘量做到通俗易懂。
本书共16章,分为三部分。
第一部分 基础篇(第1~6章)
通过大量的程式实例详细介绍了Flask的所有基础知识,在每章的后面又提供了一些进阶技巧,供进阶读者学习。
第二部分 实战篇(第7~11章)
通过5个真实的项目案例来串接和阐释不同的知识点,难度逐渐递增。这5个案例分别为留言板SayHello、个人部落格Bluelog、图片社交网站Albumy、待办事项程式Todoism和聊天室CatChat。
第三部分 进阶篇(第12~16章)
介绍了Flask程式的部署流程测试、性能最佳化和部署上线;然后通过一个真实的实例讲解了Flask扩展的开发,以原始码为切入点深入剖析了Flask的实现原理与主要工作机制。
作者简介
李辉(Grey Li),Flask官方开发团队(Pallets Team)成员,知乎专栏“Hello, Flask!”作者,HelloFlask网站创建者。对Flask有非常深入的研究,熟悉它的原始码,有丰富的项目经验。他热爱分享和创造,曾为Flask等多个开源项目贡献过代码。
目录
第1章 初识Flask
1.1 搭建开发环境
1.1.1 Pipenv工作流
1.1.2 安装Flask
1.1.3 集成开发环境
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.4 Python Shell
1.5 Flask扩展
1.6 项目配置
1.7 URL与端点
1.8 Flask命令
1.9 模板与静态档案
1.10 Flask与MVC架构
1.11 本章小结
第2章 Flask与HTTP
2.1 请求回响循环
2.2 HTTP请求
2.2.1 请求报文
2.2.2 Request对象
2.2.3 在Flask中处理请求
2.2.4 请求钩子
2.3 HTTP回响
2.3.1 回响报文
2.3.2 在Flask中生成回响
2.3.3 回响格式
2.3.4 来一块Cookie
2.3.5 session安全的Cookie
2.4 Flask上下文
2.4.1 上下文全局变数
2.4.2 激活上下文
2.4.3 上下文钩子
2.5 HTTP进阶实践
2.5.1 重定向回上一个页面
2.5.2 使用AJAX技术传送异步请求
2.5.3 HTTP伺服器端推送
2.5.4 Web安全防範
2.6 本章小结
第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 空白控制
3.4.2 载入静态档案
3.4.3 讯息闪现
3.4.4 自定义错误页面
3.4.5 JavaScript和CSS中的Jinja2
3.5 本章小结
第4章 表单
4.1 HTML表单
4.2 使用Flask-WTF处理表单
4.2.1 定义WTForms表单类
4.2.2 输出HTML代码
4.2.3 在模板中渲染表单
4.3 处理表单数据
4.3.1 提交表单
4.3.2 验证表单数据
4.3.3 在模板中渲染错误讯息
4.4 表单进阶实践
4.4.1 设定错误讯息语言
4.4.2 使用宏渲染表单
4.4.3 自定义验证器
4.4.4 档案上传
4.4.5 使用Flask-CKEditor集成富文本编辑器
4.4.6 单个表单多个提交按钮
4.4.7 单个页面多个表单
4.5 本章小结
第5章 资料库
5.1 资料库的分类
5.1.1 SQL
5.1.2 NoSQL
5.1.3 如何选择?
5.2 ORM魔法
5.3 使用Flask-SQLAlchemy管理资料库
5.3.1 连线资料库伺服器
5.3.2 定义资料库模型
5.3.3 创建资料库和表
5.4 资料库操作
5.4.1 CRUD
5.4.2 在视图函数里运算元据库
5.5 定义关係
5.5.1 配置Python Shell上下文
5.5.2 一对多
5.5.3 多对一
5.5.4 一对一
5.5.5 多对多
5.6 更新资料库表
5.6.1 重新生成表
5.6.2 使用Flask-Migrate迁移资料库
5.6.3 开发时是否需要迁移?
5.7 资料库进阶实践
5.7.1 级联操作
5.7.2 事件监听
5.8 本章小结
第6章 电子邮件
6.1 使用Flask-Mail传送电子邮件
6.1.1 配置Flask-Mail
6.1.2 构建邮件数据
6.1.3 传送邮件
6.2 使用事务邮件服务SendGird
6.2.1 注册SendGird
6.2.2 SendGrid SMTP转发
6.2.3 SendGrid Web API转发
6.3 电子邮件进阶实践
6.3.1 提供HTML正文
6.3.2 使用Jinja2模板组织邮件正文
6.3.3 异步传送邮件
6.4 本章小结
第二部分 实战篇
第7章 留言板
7.1 使用包组织代码
7.1.1 配置档案
7.1.2 创建程式实例
7.2 Web程式开发流程
7.2.1 程式功能设计
7.2.2 前端页面开发
7.2.3 后端程式开发
7.3 使用Bootstrap-Flask简化页面编写
7.3.1 载入资源档案
7.3.2 快捷渲染表单
7.4 使用Flask-Moment本地化日期和时间
7.4.1 本地化前的準备
7.4.2 使用Flask-Moment集成Moment.js
7.4.3 渲染时间日期
7.5 使用Faker生成虚拟数据
7.6 使用Flask-DebugToolbar调试程式
7.7 Flask配置的两种组织形式
7.7.1 环境变数优先
7.7.2 实例资料夹覆盖
7.8 本章小结
第8章 个人部落格
8.1 大型项目结构
8.1.1 使用蓝本模组化程式
8.1.2 使用类组织配置
8.1.3 使用工厂函式创建程式实例
8.2 编写程式骨架
8.2.1 资料库
8.2.2 模板
8.2.3 表单
8.2.4 视图函式
8.2.5 电子邮件支持
8.3 编写部落格前台
8.3.1 分页显示文章列表
8.3.2 显示文章正文
8.3.3 文章固定连结
8.3.4 显示分类文章列表
8.3.5 显示评论列表
8.3.6 发表评论与回复
8.3.7 支持回複评论
8.3.8 网站主题切换
8.4 初始化部落格
8.4.1 安全存储密码
8.4.2 创建管理员用户
8.5 使用Flask-Login管理用户认证
8.5.1 获取当前用户
8.5.2 登入用户
8.5.3 登出用户
8.5.4 视图保护
8.6 使用CSRFProtect实现CSRF保护
8.7 编写部落格后台
8.7.1 文章管理
8.7.2 评论管理
8.7.3 分类管理
8.8 本章小结
第9章 图片社交网站
9.1 项目组织架构
9.1.1 功能式架构
9.1.2 分区式架构
9.1.3 混合式架构
9.1.4 如何选择
9.2 编写程式骨架
9.2.1 资料库模型与虚拟数据
9.2.2 模板与静态档案
9.3 高级用户认证
9.3.1 用户注册
9.3.2 验证信箱地址
9.3.3 使用装饰器过滤未确认用户
9.3.4 密码重置
9.4 基于用户角色的许可权管理
9.4.1 角色与许可权模型
9.4.2 设定角色与许可权
9.4.3 写入角色与许可权
9.4.4 验证用户许可权
9.5 使用Flask-Dropzone最佳化档案上传
9.5.1 配置Flask-Dropzone
9.5.2 渲染上传区域
9.5.3 处理并保存上传图片
9.6 使用Flask-Avatars处理用户头像
9.6.1 默认头像
9.6.2 生成随机头像
9.7 图片展示与管理
9.7.1 在用户主页显示图片列表
9.7.2 图片详情页
9.7.3 上一张下一张跳转
9.7.4 删除确认模态框
9.7.5 举报图片
9.7.6 图片描述
9.7.7 图片标籤
9.7.8 用户资料弹窗
9.8 收藏图片
9.8.1 使用关联模型表示多对多关係
9.8.2 添加和取消收藏
9.8.3 收藏者和收藏页面
9.9 用户关注
9.9.1 自引用多对多关係
9.9.2 关注与取消关注
9.9.3 显示关注用户列表
9.9.4 使用AJAX在弹窗中执行关注操作
9.10 讯息提醒
9.10.1 提醒讯息在资料库中的表示
9.10.2 创建提醒
9.10.3 显示和管理提醒
9.10.4 通过轮询实时更新未读计数
9.11 用户资料与账户设定
9.11.1 编辑个人资料
9.11.2 自定义头像
9.11.3 更改密码
9.11.4 提醒讯息开关
9.11.5 将收藏设为仅自己可见
9.11.6 注销账号
9.12 首页与探索
9.12.1 获取正在关注用户的图片
9.12.2 使用联结和分组查询获取热门标籤
9.12.3 使用资料库通用函式获取随机图片
9.13 使用Flask-Whooshee实现全文搜寻
9.13.1 创建索引
9.13.2 搜寻表单
9.13.3 显示搜寻结果
9.14 编写网站后台
9.14.1 用户管理
9.14.2 资源管理
9.14.3 面向管理员的用户资料编辑
9.15 本章小结
第10章 待办事项程式
10.1 使用JavaScript和AJAX编写单页程式
10.1.1 单页程式的模板组织
10.1.2 在根页面内切换子页面
10.1.3 生成测试账户
10.1.4 添加新待办条目
10.2 国际化与本地化
10.2.1 使用Flask-Babel集成Babel
10.2.2 区域和语言
10.2.3 文本的国际化
10.2.4 文本的本地化
10.2.5 时间与日期的本地化
10.3 设计并编写Web API
10.3.1 认识Web API
10.3.2 设计优美实用的Web API
10.3.3 使用Flask编写Web API
10.3.4 使用OAuth认证
10.3.5 资源的序列化
10.3.6 资源的反序列化
10.3.7 Web API的测试与发布
10.4 本章小结
第11章 线上聊天室
11.1 编写程式骨架
11.2 Gravatar头像
11.3 使用Flask-SocketIO建立实时双向通讯
11.3.1 建立Socket.IO连线
11.3.2 一条讯息的旅程
11.3.3 线上人数统计
11.3.4 通讯频道分离
11.4 使用Flask-OAuthlib实现第三方登录
11.4.1 编写OAuth客户端
11.4.2 注册OAuth程式
11.4.3 处理OAuth2授权
11.4.4 处理OAuth1授权
11.5 聊天室功能增强
11.5.1 无限滚动载入历史讯息
11.5.2 Markdown支持
11.5.3 代码语法高亮
11.5.4 标籤页讯息提醒
11.5.5 浏览器桌面通知
11.5.6 讯息管理
11.6 本章小结
第三部分 高级篇
第12章 自动化测试
12.1 认识自动化测试
12.2 Flask测试客户端
12.3 使用unittest编写单元测试
12.3.1 Flask程式的测试固件
12.3.2 编写测试用例
12.3.3 组织测试
12.3.4 运行测试
12.4 使用Selenium进行用户界面测试
12.4.1 安装浏览器与驱动
12.4.2 準备测试环境
12.4.3 编写测试代码
12.5 使用Coverage.py计算测试覆盖率
12.5.1 基本用法
12.5.2 获取测试覆盖率
12.6 使用Flake8检查代码质量
12.7 本章小结
第13章 性能最佳化
13.1 程式性能分析
13.1.1 函式性能分析
13.1.2 资料库查询分析
13.2 使用Flask-Caching设定快取
13.2.1 快取视图函式
13.2.2 快取其他函式
13.2.3 更新快取
13.2.4 使用Redis作为快取后端
13.3 使用Flask-Assets最佳化静态资源
13.3.1 注册资源集
13.3.2 生成资源集档案
13.3.3 在模板中载入资源集
13.4 本章小结
第14章 部署上线
14.1 传统部署 VS 云部署
14.2 基本部署流程
14.3 部署前的準备
14.3.1 更新程式配置
14.3.2 创建生产环境专用的程式实例
14.3.3 设定迁移工具
14.3.4 程式日誌
14.3.5 手动导入环境变数
14.3.6 HTTPS转发
14.4 部署到Linux伺服器
14.4.1 使用OpenSSH登录远程主机
14.4.2 安装基本库和工具
14.4.3 安全防护措施
14.4.4 推送代码并初始化程式环境
14.4.5 使用Gunicorn运行程式
14.4.6 使用Nginx提供反向代理
14.4.7 使用Supervisor管理进程
14.4.8 更新部署后的程式
14.5 部署到PythonAnywhere
14.5.1 反向代理设定
14.5.2 创建PythonAnywhere程式
14.5.3 推送代码并初始化程式环境
14.5.4 创建资料库
14.5.5 设定虚拟环境
14.5.6 静态档案
14.5.7 运行和更新程式
14.6 部署到Heroku
14.6.1 通过Heroku Git部署
14.6.2 使用GitHub部署
14.7 下一步做什幺?
14.8 本章小结
第15章 Flask扩展开发
15.1 扩展的命名
15.2 扩展项目骨架
15.3 编写扩展类
15.4 添加扩展配置
15.5 实现扩展功能
15.5.1 载入静态资源
15.5.2 创建分享组件
15.5.3 在移动设备上隐藏
15.6 开源发布前的準备
15.6.1 添加文档字元串与注释
15.6.2 编写README与文档
15.6.3 为打包做準备
15.6.4 编写示例程式
15.6.5 编写单元测试
15.7 发布到PyPI
15.7.1 创建PyPI账号
15.7.2 使用setuptools打包
15.7.3 使用twine上传
15.8 编写良好的扩展
15.9 本章小结
第16章 Flask工作原理与机制解析
16.1 阅读Flask源码
16.1.1 获取Flask源码
16.1.2 如何阅读源码
16.1.3 Flask发行版本分析
16.2 Flask的设计理念
16.2.1 “微”框架
16.2.2 两个核心依赖
16.2.3 显式程式对象
16.2.4 本地上下文
16.2.5 三种程式状态
16.2.6 丰富的自定义支持
16.3 Flask与WSGI
16.3.1 WSGI程式
16.3.2 WSGI伺服器
16.3.3 中间件
16.4 Flask的工作流程与机制
16.4.1 Flask中的请求回响循环
16.4.2 路由系统
16.4.3 本地上下文
16.4.4 请求与回响对象
16.4.5 session
16.4.6 蓝本
16.4.7 模板渲染
16.5 本章小结
1.1 搭建开发环境
1.1.1 Pipenv工作流
1.1.2 安装Flask
1.1.3 集成开发环境
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.4 Python Shell
1.5 Flask扩展
1.6 项目配置
1.7 URL与端点
1.8 Flask命令
1.9 模板与静态档案
1.10 Flask与MVC架构
1.11 本章小结
第2章 Flask与HTTP
2.1 请求回响循环
2.2 HTTP请求
2.2.1 请求报文
2.2.2 Request对象
2.2.3 在Flask中处理请求
2.2.4 请求钩子
2.3 HTTP回响
2.3.1 回响报文
2.3.2 在Flask中生成回响
2.3.3 回响格式
2.3.4 来一块Cookie
2.3.5 session安全的Cookie
2.4 Flask上下文
2.4.1 上下文全局变数
2.4.2 激活上下文
2.4.3 上下文钩子
2.5 HTTP进阶实践
2.5.1 重定向回上一个页面
2.5.2 使用AJAX技术传送异步请求
2.5.3 HTTP伺服器端推送
2.5.4 Web安全防範
2.6 本章小结
第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 空白控制
3.4.2 载入静态档案
3.4.3 讯息闪现
3.4.4 自定义错误页面
3.4.5 JavaScript和CSS中的Jinja2
3.5 本章小结
第4章 表单
4.1 HTML表单
4.2 使用Flask-WTF处理表单
4.2.1 定义WTForms表单类
4.2.2 输出HTML代码
4.2.3 在模板中渲染表单
4.3 处理表单数据
4.3.1 提交表单
4.3.2 验证表单数据
4.3.3 在模板中渲染错误讯息
4.4 表单进阶实践
4.4.1 设定错误讯息语言
4.4.2 使用宏渲染表单
4.4.3 自定义验证器
4.4.4 档案上传
4.4.5 使用Flask-CKEditor集成富文本编辑器
4.4.6 单个表单多个提交按钮
4.4.7 单个页面多个表单
4.5 本章小结
第5章 资料库
5.1 资料库的分类
5.1.1 SQL
5.1.2 NoSQL
5.1.3 如何选择?
5.2 ORM魔法
5.3 使用Flask-SQLAlchemy管理资料库
5.3.1 连线资料库伺服器
5.3.2 定义资料库模型
5.3.3 创建资料库和表
5.4 资料库操作
5.4.1 CRUD
5.4.2 在视图函数里运算元据库
5.5 定义关係
5.5.1 配置Python Shell上下文
5.5.2 一对多
5.5.3 多对一
5.5.4 一对一
5.5.5 多对多
5.6 更新资料库表
5.6.1 重新生成表
5.6.2 使用Flask-Migrate迁移资料库
5.6.3 开发时是否需要迁移?
5.7 资料库进阶实践
5.7.1 级联操作
5.7.2 事件监听
5.8 本章小结
第6章 电子邮件
6.1 使用Flask-Mail传送电子邮件
6.1.1 配置Flask-Mail
6.1.2 构建邮件数据
6.1.3 传送邮件
6.2 使用事务邮件服务SendGird
6.2.1 注册SendGird
6.2.2 SendGrid SMTP转发
6.2.3 SendGrid Web API转发
6.3 电子邮件进阶实践
6.3.1 提供HTML正文
6.3.2 使用Jinja2模板组织邮件正文
6.3.3 异步传送邮件
6.4 本章小结
第二部分 实战篇
第7章 留言板
7.1 使用包组织代码
7.1.1 配置档案
7.1.2 创建程式实例
7.2 Web程式开发流程
7.2.1 程式功能设计
7.2.2 前端页面开发
7.2.3 后端程式开发
7.3 使用Bootstrap-Flask简化页面编写
7.3.1 载入资源档案
7.3.2 快捷渲染表单
7.4 使用Flask-Moment本地化日期和时间
7.4.1 本地化前的準备
7.4.2 使用Flask-Moment集成Moment.js
7.4.3 渲染时间日期
7.5 使用Faker生成虚拟数据
7.6 使用Flask-DebugToolbar调试程式
7.7 Flask配置的两种组织形式
7.7.1 环境变数优先
7.7.2 实例资料夹覆盖
7.8 本章小结
第8章 个人部落格
8.1 大型项目结构
8.1.1 使用蓝本模组化程式
8.1.2 使用类组织配置
8.1.3 使用工厂函式创建程式实例
8.2 编写程式骨架
8.2.1 资料库
8.2.2 模板
8.2.3 表单
8.2.4 视图函式
8.2.5 电子邮件支持
8.3 编写部落格前台
8.3.1 分页显示文章列表
8.3.2 显示文章正文
8.3.3 文章固定连结
8.3.4 显示分类文章列表
8.3.5 显示评论列表
8.3.6 发表评论与回复
8.3.7 支持回複评论
8.3.8 网站主题切换
8.4 初始化部落格
8.4.1 安全存储密码
8.4.2 创建管理员用户
8.5 使用Flask-Login管理用户认证
8.5.1 获取当前用户
8.5.2 登入用户
8.5.3 登出用户
8.5.4 视图保护
8.6 使用CSRFProtect实现CSRF保护
8.7 编写部落格后台
8.7.1 文章管理
8.7.2 评论管理
8.7.3 分类管理
8.8 本章小结
第9章 图片社交网站
9.1 项目组织架构
9.1.1 功能式架构
9.1.2 分区式架构
9.1.3 混合式架构
9.1.4 如何选择
9.2 编写程式骨架
9.2.1 资料库模型与虚拟数据
9.2.2 模板与静态档案
9.3 高级用户认证
9.3.1 用户注册
9.3.2 验证信箱地址
9.3.3 使用装饰器过滤未确认用户
9.3.4 密码重置
9.4 基于用户角色的许可权管理
9.4.1 角色与许可权模型
9.4.2 设定角色与许可权
9.4.3 写入角色与许可权
9.4.4 验证用户许可权
9.5 使用Flask-Dropzone最佳化档案上传
9.5.1 配置Flask-Dropzone
9.5.2 渲染上传区域
9.5.3 处理并保存上传图片
9.6 使用Flask-Avatars处理用户头像
9.6.1 默认头像
9.6.2 生成随机头像
9.7 图片展示与管理
9.7.1 在用户主页显示图片列表
9.7.2 图片详情页
9.7.3 上一张下一张跳转
9.7.4 删除确认模态框
9.7.5 举报图片
9.7.6 图片描述
9.7.7 图片标籤
9.7.8 用户资料弹窗
9.8 收藏图片
9.8.1 使用关联模型表示多对多关係
9.8.2 添加和取消收藏
9.8.3 收藏者和收藏页面
9.9 用户关注
9.9.1 自引用多对多关係
9.9.2 关注与取消关注
9.9.3 显示关注用户列表
9.9.4 使用AJAX在弹窗中执行关注操作
9.10 讯息提醒
9.10.1 提醒讯息在资料库中的表示
9.10.2 创建提醒
9.10.3 显示和管理提醒
9.10.4 通过轮询实时更新未读计数
9.11 用户资料与账户设定
9.11.1 编辑个人资料
9.11.2 自定义头像
9.11.3 更改密码
9.11.4 提醒讯息开关
9.11.5 将收藏设为仅自己可见
9.11.6 注销账号
9.12 首页与探索
9.12.1 获取正在关注用户的图片
9.12.2 使用联结和分组查询获取热门标籤
9.12.3 使用资料库通用函式获取随机图片
9.13 使用Flask-Whooshee实现全文搜寻
9.13.1 创建索引
9.13.2 搜寻表单
9.13.3 显示搜寻结果
9.14 编写网站后台
9.14.1 用户管理
9.14.2 资源管理
9.14.3 面向管理员的用户资料编辑
9.15 本章小结
第10章 待办事项程式
10.1 使用JavaScript和AJAX编写单页程式
10.1.1 单页程式的模板组织
10.1.2 在根页面内切换子页面
10.1.3 生成测试账户
10.1.4 添加新待办条目
10.2 国际化与本地化
10.2.1 使用Flask-Babel集成Babel
10.2.2 区域和语言
10.2.3 文本的国际化
10.2.4 文本的本地化
10.2.5 时间与日期的本地化
10.3 设计并编写Web API
10.3.1 认识Web API
10.3.2 设计优美实用的Web API
10.3.3 使用Flask编写Web API
10.3.4 使用OAuth认证
10.3.5 资源的序列化
10.3.6 资源的反序列化
10.3.7 Web API的测试与发布
10.4 本章小结
第11章 线上聊天室
11.1 编写程式骨架
11.2 Gravatar头像
11.3 使用Flask-SocketIO建立实时双向通讯
11.3.1 建立Socket.IO连线
11.3.2 一条讯息的旅程
11.3.3 线上人数统计
11.3.4 通讯频道分离
11.4 使用Flask-OAuthlib实现第三方登录
11.4.1 编写OAuth客户端
11.4.2 注册OAuth程式
11.4.3 处理OAuth2授权
11.4.4 处理OAuth1授权
11.5 聊天室功能增强
11.5.1 无限滚动载入历史讯息
11.5.2 Markdown支持
11.5.3 代码语法高亮
11.5.4 标籤页讯息提醒
11.5.5 浏览器桌面通知
11.5.6 讯息管理
11.6 本章小结
第三部分 高级篇
第12章 自动化测试
12.1 认识自动化测试
12.2 Flask测试客户端
12.3 使用unittest编写单元测试
12.3.1 Flask程式的测试固件
12.3.2 编写测试用例
12.3.3 组织测试
12.3.4 运行测试
12.4 使用Selenium进行用户界面测试
12.4.1 安装浏览器与驱动
12.4.2 準备测试环境
12.4.3 编写测试代码
12.5 使用Coverage.py计算测试覆盖率
12.5.1 基本用法
12.5.2 获取测试覆盖率
12.6 使用Flake8检查代码质量
12.7 本章小结
第13章 性能最佳化
13.1 程式性能分析
13.1.1 函式性能分析
13.1.2 资料库查询分析
13.2 使用Flask-Caching设定快取
13.2.1 快取视图函式
13.2.2 快取其他函式
13.2.3 更新快取
13.2.4 使用Redis作为快取后端
13.3 使用Flask-Assets最佳化静态资源
13.3.1 注册资源集
13.3.2 生成资源集档案
13.3.3 在模板中载入资源集
13.4 本章小结
第14章 部署上线
14.1 传统部署 VS 云部署
14.2 基本部署流程
14.3 部署前的準备
14.3.1 更新程式配置
14.3.2 创建生产环境专用的程式实例
14.3.3 设定迁移工具
14.3.4 程式日誌
14.3.5 手动导入环境变数
14.3.6 HTTPS转发
14.4 部署到Linux伺服器
14.4.1 使用OpenSSH登录远程主机
14.4.2 安装基本库和工具
14.4.3 安全防护措施
14.4.4 推送代码并初始化程式环境
14.4.5 使用Gunicorn运行程式
14.4.6 使用Nginx提供反向代理
14.4.7 使用Supervisor管理进程
14.4.8 更新部署后的程式
14.5 部署到PythonAnywhere
14.5.1 反向代理设定
14.5.2 创建PythonAnywhere程式
14.5.3 推送代码并初始化程式环境
14.5.4 创建资料库
14.5.5 设定虚拟环境
14.5.6 静态档案
14.5.7 运行和更新程式
14.6 部署到Heroku
14.6.1 通过Heroku Git部署
14.6.2 使用GitHub部署
14.7 下一步做什幺?
14.8 本章小结
第15章 Flask扩展开发
15.1 扩展的命名
15.2 扩展项目骨架
15.3 编写扩展类
15.4 添加扩展配置
15.5 实现扩展功能
15.5.1 载入静态资源
15.5.2 创建分享组件
15.5.3 在移动设备上隐藏
15.6 开源发布前的準备
15.6.1 添加文档字元串与注释
15.6.2 编写README与文档
15.6.3 为打包做準备
15.6.4 编写示例程式
15.6.5 编写单元测试
15.7 发布到PyPI
15.7.1 创建PyPI账号
15.7.2 使用setuptools打包
15.7.3 使用twine上传
15.8 编写良好的扩展
15.9 本章小结
第16章 Flask工作原理与机制解析
16.1 阅读Flask源码
16.1.1 获取Flask源码
16.1.2 如何阅读源码
16.1.3 Flask发行版本分析
16.2 Flask的设计理念
16.2.1 “微”框架
16.2.2 两个核心依赖
16.2.3 显式程式对象
16.2.4 本地上下文
16.2.5 三种程式状态
16.2.6 丰富的自定义支持
16.3 Flask与WSGI
16.3.1 WSGI程式
16.3.2 WSGI伺服器
16.3.3 中间件
16.4 Flask的工作流程与机制
16.4.1 Flask中的请求回响循环
16.4.2 路由系统
16.4.3 本地上下文
16.4.4 请求与回响对象
16.4.5 session
16.4.6 蓝本
16.4.7 模板渲染
16.5 本章小结