《Flask Web开发实战 入门、进阶与原理解析》PDF下载

  • 购买积分:19 如何计算积分?
  • 作  者:李辉著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2018
  • ISBN:9787111606598
  • 页数:684 页
图书介绍:本书共16章。基础篇(第1-6章),通过大量的程序实例来介绍Flask的基础知识,同时在每章的后面又加入一些进阶技巧,供进阶读者学习。实战篇(第7-11章),每一章都通过一个真实项目来组织起不同的知识点,难度递增。这5个程序分别为:留言板SayHello、个人博客Bluelog、图片社交网站Albumy、待办事项程序Todoism和聊天室CatChat。进阶篇(第12-16章),除了介绍Flask程序的部署流程,如测试、性能优化和部署上线,还通过一个真实的示例来介绍Flask扩展开发,最后一章则以源码分析作为切入点深入剖析了Flask的实现原理与主要工作机制。

第一部分 基础篇 2

第1章 初识Flask 2

1.1搭建开发环境 3

1.1.1 Pipenv工作流 3

1.1.2安装Flask 7

1.1.3集成开发环境 8

1.2 Hello,Flask! 11

1.2.1创建程序实例 11

1.2.2注册路由 12

1.3启动开发服务器 14

1.3.1 Run,Flask,Run! 14

1.3.2更多的启动选项 18

1.3.3设置运行环境 18

1.4 Python Shell 20

1.5 Flask扩展 21

1.6项目配置 22

1.7 URL与端点 23

1.8 Flask命令 23

1.9模板与静态文件 24

1.10 Flask与MVC架构 25

1.11本章小结 26

第2章 Flask与HTTP 27

2.1请求响应循环 27

2.2 HTTP请求 29

2.2.1请求报文 29

2.2.2 Request对象 31

2.2.3在Flask中处理请求 34

2.2.4请求钩子 37

2.3 HTTP响应 38

2.3.1响应报文 39

2.3.1在Flask中生成响应 40

2.3.2响应格式 43

2.3.3来一块Cookie 46

2.3.4 session:安全的Cookie 49

2.4 Flask上下文 54

2.4.1上下文全局变量 54

2.4.2激活上下文 55

2.4.3上下文钩子 56

2.5 HTTP进阶实践 57

2.5.1重定向回上一个页面 57

2.5.2使用AJAX技术发送异步请求 60

2.5.3 HTTP服务器端推送 64

2.5.4 Web安全防范 65

2.6本章小结 74

第3章 模板 75

3.1模板基本用法 75

3.1.1创建模板 76

3.1.2模板语法 77

3.1.3渲染模板 78

3.2模板辅助工具 80

3.2.1上下文 80

3.2.2全局对象 82

3.2.3过滤器 83

3.2.4测试器 85

3.2.5模板环境对象 87

3.3模板结构组织 88

3.3.1局部模板 88

3.3.2宏 88

3.3.3模板继承 90

3.4模板进阶实践 93

3.4.1空白控制 93

3.4.2加载静态文件 94

3.4.3消息闪现 98

3.4.4自定义错误页面 100

3.4.5 JavaScript和CSS中的Jinja2 101

3.5本章小结 103

第4章 表单 104

4.1 HTML表单 104

4.2使用Flask-WTF处理表单 106

4.2.1定义WTForms表单类 106

4.2.2输出HTML代码 109

4.2.3在模板中渲染表单 110

4.3处理表单数据 112

4.3.1提交表单 112

4.3.2验证表单数据 113

4.3.3在模板中渲染错误消息 117

4.4表单进阶实践 118

4.4.1设置错误消息语言 118

4.4.2使用宏渲染表单 120

4.4.3自定义验证器 121

4.4.4文件上传 122

4.4.5使用Flask-CKEditor集成富文本编辑器 129

4.4.6单个表单多个提交按钮 132

4.4.7单个页面多个表单 133

4.5本章小结 137

第5章 数据库 138

5.1数据库的分类 139

5.1.1 SQL 139

5.1.2 NoSQL 139

5.1.3如何选择? 140

5.2 ORM魔法 140

5.3使用Flask-SQLAlchemy管理数据库 142

5.3.1连接数据库服务器 142

5.3.2定义数据库模型 144

5.3.3创建数据库和表 145

5.4数据库操作 146

5.4.1 CRUD 147

5.4.2在视图函数里操作数据库 151

5.5定义关系 156

5.5.1配置Python Shell上下文 157

5.5.2一对多 158

5.5.3多对一 164

5.5.4一对一 165

5.5.5多对多 166

5.6更新数据库表 168

5.6.1重新生成表 168

5.6.2使用Flask-Migrate迁移数据库 169

5.6.3开发时是否需要迁移? 171

5.7数据库进阶实践 172

5.7.1级联操作 172

5.7.2事件监听 175

5.8本章小结 177

第6章 电子邮件 178

6.1使用Flask-Mail发送电子邮件 179

6.1.1配置Flask-Mail 179

6.1.2构建邮件数据 182

6.1.3发送邮件 182

6.2使用事务邮件服务SendGird 183

6.2.1注册SendGird 183

6.2.2 SendGrid SMTP转发 185

6.2.3 SendGrid Web API转发 185

6.3电子邮件进阶实践 188

6.3.1提供HTML正文 188

6.3.2使用Jinja2模板组织邮件正文 189

6.3.3异步发送邮件 191

6.4本章小结 192

第二部分 实战篇 194

第7章 留言板 194

7.1使用包组织代码 195

7.1.1配置文件 196

7.1.2创建程序实例 197

7.2 Web程序开发流程 198

7.2.1程序功能设计 199

7.2.1前端页面开发 200

7.2.3后端程序开发 202

7.3使用Bootstrap-Flask简化页面编写 206

7.3.1加载资源文件 207

7.3.2快捷渲染表单 207

7.4使用 Flask-Moment本地化日期和时间 209

7.4.1本地化前的准备 209

7.4.2使用Flask-Moment集成Moment…js 209

7.4.3渲染时间日期 210

7.5使用Faker生成虚拟数据 213

7.6使用Flask-DebugToolbar调试程序 215

7.7 Flask配置的两种组织形式 216

7.7.1环境变量优先 217

7.7.2实例文件夹覆盖 217

7.8本章小结 218

第8章 个人博客 219

8.1大型项目结构 220

8.1.1使用蓝本模块化程序 221

8.1.2使用类组织配置 227

8.1.3使用工厂函数创建程序实例 228

8.2编写程序骨架 232

8.2.1数据库 233

8.2.2模板 240

8.2.3表单 246

8.2.4视图函数 249

8.2.5电子邮件支持 249

8.3编写博客前台 251

8.3.1分页显示文章列表 251

8.3.2显示文章正文 258

8.3.3文章固定链接 259

8.3.4显示分类文章列表 262

8.3.5显示评论列表 263

8.3.6发表评论与回复 266

8.3.7支持回复评论 267

8.3.8网站主题切换 269

8.4初始化博客 271

8.4.1安全存储密码 271

8.4.2创建管理员用户 273

8.5使用Flask-Login管理用户认证 275

8.5.1获取当前用户 276

8.5.2登入用户 277

8.5.3登出用户 278

8.5.4视图保护 279

8.6使用CSRFProtect实现CSRF保护 281

8.7编写博客后台 283

8.7.1文章管理 284

8.7.2评论管理 291

8.7.3分类管理 297

8.8本章小结 298

第9章 图片社交网站 299

9.1项目组织架构 300

9.1.1功能式架构 300

9.1.2分区式架构 302

9.1.3混合式架构 303

9.1.4如何选择 303

9.2编写程序骨架 303

9.2.1数据库模型与虚拟数据 305

9.2.2模板与静态文件 307

9.3高级用户认证 308

9.3.1用户注册 309

9.3.2验证邮箱地址 311

9.3.3使用装饰器过滤未确认用户 315

9.3.4密码重置 316

9.4基于用户角色的权限管理 319

9.4.1角色与权限模型 319

9.4.2设置角色与权限 320

9.4.3写入角色与权限 321

9.4.4验证用户权限 323

9.5使用Flask-Dropzone优化文件上传 325

9.5.1配置Flask-Dropzone 326

9.5.2渲染上传区域 328

9.5.3处理并保存上传图片 329

9.6使用Flask-Avatars处理用户头像 334

9.6.1默认头像 335

9.6.2生成随机头像 335

9.7图片展示与管理 337

9.7.1在用户主页显示图片列表 338

9.7.2图片详情页 341

9.7.3上一张下一张跳转 342

9.7.4删除确认模态框 344

9.7.5举报图片 346

9.7.6图片描述 347

9.7.7图片标签 349

9.7.8用户资料弹窗 353

9.8收藏图片 358

9.8.1使用关联模型表示多对多关系 358

9.8.2添加和取消收藏 360

9.8.3收藏者和收藏页面 362

9.9用户关注 365

9.9.1自引用多对多关系 365

9.9.2关注与取消关注 366

9.9.3显示关注用户列表 369

9.9.4使用AJAX在弹窗中执行关注操作 371

9.10消息提醒 378

9.10.1提醒消息在数据库中的表示 379

9.10.2创建提醒 379

9.10.3显示和管理提醒 380

9.10.4通过轮询实时更新未读计数 382

9.11用户资料与账户设置 384

9.11.1编辑个人资料 385

9.11.2自定义头像 386

9.11.3更改密码 392

9.11.4提醒消息开关 394

9.11.5将收藏设为仅自己可见 395

9.11.6注销账户 396

9.12首页与探索 397

9.12.1获取正在关注用户的图片 399

9.12.2使用联结和分组查询获取热门标签 401

9.12.3使用数据库通用函数获取随机图片 402

9.13使用Flask-Whooshee实现全文搜索 403

9.13.1创建索引 404

9.13.2搜索表单 405

9.13.3显示搜索结果 406

9.14编写网站后台 407

9.14.1用户管理 408

9.14.2资源管理 411

9.14.3面向管理员的用户资料编辑 412

9.15本章小结 413

第10章 待办事项程序 415

10.1使用JavaScript和AJAX编写单页程序 417

10.1.1单页程序的模板组织 418

10.1.2在根页面内切换子页面 421

10.1.3生成测试账户 423

10.1.4添加新待办条目 424

10.2国际化与本地化 426

10.2.1使用Flask-Babel集成Babel 427

10.2.2区域和语言 427

10.2.3文本的国际化 432

10.2.4文本的本地化 433

10.2.5时间与日期的本地化 438

10.3设计并编写Web API 440

10.3.1认识Web API 441

10.3.2设计优美实用的Web API 443

10.3.3使用Flask编写Web API 446

10.3.4使用OAuth认证 453

10.3.5资源的序列化 461

10.3.6资源的反序列化 465

10.3.7 Web API的测试与发布 470

10.4本章小结 473

第11章 在线聊天室 474

11.1编写程序骨架 476

11.2 Gravatar头像 477

11.3使用Flask-SocketIO建立实时双向通信 480

11.3.1建立Socket.IO连接 481

11.3.2一条消息的旅程 482

11.3.3在线人数统计 485

11.3.4通信频道分离 486

11.4使用Flask-OAuthlib实现第三方登录 489

11.4.1编写OAuth客户端 490

11.4.2注册OAuth程序 491

11.4.3处理OAuth2授权 493

11.4.4处理OAuth1授权 505

11.5聊天室功能增强 507

11.5.1无限滚动加载历史消息 507

11.5.2 Markdown支持 510

11.5.3代码语法高亮 512

11.5.4标签页消息提醒 515

11.5.5浏览器桌面通知 517

11.5.6消息管理 519

11.6本章小结 519

第三部分 进阶篇 522

第12章 自动化测试 522

12.1认识自动化测试 522

12.2 Flask测试客户端 523

12.3使用unittest编写单元测试 525

12.3.1 Flask程序的测试固件 525

12.3.2编写测试用例 527

12.3.3组织测试 533

12.3.4运行测试 535

12.4使用Selenium进行用户界面测试 536

12.4.1安装浏览器与驱动 537

12.4.2准备测试环境 538

12.4.3编写测试代码 539

12.5使用Coverage.py计算测试覆盖率 541

12.5.1基本用法 542

12.5.2获取测试覆盖率 543

12.6使用Flake8检查代码质量 544

12.7本章小结 546

第13章 性能优化 547

13.1程序性能分析 548

13.1.1函数性能分析 548

13.1.2数据库查询分析 549

13.2使用Flask-Caching设置缓存 551

13.2.1缓存视图函数 552

13.2.2缓存其他函数 554

13.2.3更新缓存 554

13.2.4使用Redis作为缓存后端 556

13.3使用Flask-Assets优化静态资源 557

13.3.1注册资源集 558

13.3.2生成资源集文件 559

13.3.3在模板中加载资源集 559

13.4本章小结 562

第14章 部署上线 563

14.1传统部署VS云部署 563

14.2基本部署流程 564

14.3部署前的准备 566

14.3.1更新程序配置 566

14.3.2创建生产环境专用的程序实例 567

14.3.3设置迁移工具 568

14.3.4程序日志 568

14.3.5手动导入环境变量 572

14.3.6 HTTPS转发 572

14.4部署到Linux服务器 573

14.4.1使用OpenSSH登录远程主机 573

14.4.2安装基本库和工具 574

14.4.3安全防护措施 575

14.4.4推送代码并初始化程序环境 578

14.4.5使用Gunicom运行程序 579

14.4.6使用Nginx提供反向代理 580

14.4.7使用Supervisor管理进程 584

14.4.8更新部署后的程序 586

14.5部署到PythonAnywhere 587

14.5.1反向代理设置 587

14.5.2创建PythonAnywhere程序 588

14.5.3推送代码并初始化程序环境 588

14.5.4创建数据库 590

14.5.5设置虚拟环境 591

14.5.6静态文件 592

14.5.7运行和更新程序 592

14.6部署到Heroku 594

14.6.1通过Heroku Git部署 595

14.6.2使用GitHub部署 601

14.7下一步做什么? 603

14.8本章小结 604

第15章 Flask扩展开发 605

15.1扩展的命名 606

15.2扩展项目骨架 606

15.3编写扩展类 608

15.4添加扩展配置 610

15.5实现扩展功能 610

15.5.1加载静态资源 611

15.5.2创建分享组件 612

15.5.3在移动设备上隐藏 613

15.6开源发布前的准备 614

15.6.1添加文档字符串与注释 614

15.6.2编写README与文档 615

15.6.3为打包做准备 616

15.6.4编写示例程序 621

15.6.5编写单元测试 621

15.7发布到PyPI 622

15.7.1创建PypI账号 623

15.7.2使用setuptools打包 623

15.7.3使用twine上传 625

15.8编写良好的扩展 625

15.9本章小结 627

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

16.1阅读 Flask源码 628

16.1.1获取Flask源码 628

16.1.2如何阅读源码 629

16.1.3 Flask发行版本分析 637

16.2 Flask的设计理念 638

16.2.1“微”框架 638

16.2.2两个核心依赖 638

16.2.3显式程序对象 638

16.2.4本地上下文 639

16.2.5三种程序状态 640

16.2.6丰富的自定义支持 641

16.3 Flask与WSGI 641

16.3.1 WSGI程序 642

16.3.2 WSGI服务器 643

16.3.3中间件 644

16.4 Flask的工作流程与机制 646

16.4.1 Flask中的请求响应循环 646

16.4.2路由系统 649

16.4.3本地上下文 653

16.4.4请求与响应对象 665

16.4.5 session 667

16.4.6蓝本 674

16.4.7模板渲染 677

16.5本章小结 680

附录A Flask资源 681