Flask Web开发实战 - 目录
Flask开发团队成员、知乎专栏Hello, Flask!作者编写,Flask开发团队核心维护者推荐。完整目录
下面是本书的完整目录,没有包含4级标题和附录。
第一部分 基础篇
第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 本章小结