具体描述
本书不仅适合初级Web开发人员学习阅读,更是Python程序员用来学习高级Web开发技术的优秀参考书。
• 学习Flask应用的基本结构,编写示例应用;
• 使用必备的组件,包括模板、数据库、Web表单和电子邮件支持;
• 使用包和模块构建可伸缩的大型应用;
• 实现用户认证、角色和个人资料;
• 在博客网站中重用模板、分页显示列表以及使用富文本;
• 使用基于Flask的REST式API,在智能手机、平板电脑和其他第三方客户端上实现可用功能;
• 学习运行单元测试以及提升性能;
• 将Web应用部署到生产服务器。
作者简介
Miguel Grinberg
拥有25年开发经验的高级软件工程师,目前为广播公司开发视频软件。他常在个人博客(blog.miguelgrinberg.com)上撰写各类博文,内容主要涉及Web开发、机器人技术、摄影,偶尔也会有一些影评。他和妻子、四个孩子、两只狗和一只猫共同生活在俄勒冈州波特兰市。Twitter:@miguelgrinberg。
目录信息
第一部分 Flask简介
第1章 安装 3
1.1 使用虚拟环境 4
1.2 使用pip安装Python包 6
第2章 程序的基本结构 7
2.1 初始化 7
2.2 路由和视图函数 7
2.3 启动服务器 9
2.4 一个完整的程序 9
2.5 请求-响应循环 11
2.5.1 程序和请求上下文 11
2.5.2 请求调度 13
2.5.3 请求钩子 13
2.5.4 响应 14
2.6 Flask扩展 15
第3章 模板 19
3.1 Jinja2模板引擎 19
3.1.1 渲染模板 20
3.1.2 变量 21
3.1.3 控制结构 22
3.2 使用Flask-Bootstrap集成Twitter Bootstrap 23
3.3 自定义错误页面 26
3.4 链接 29
3.5 静态文件 29
3.6 使用Flask-Moment本地化日期和时间 30
第4章 Web表单 33
4.1 跨站请求伪造保护 33
4.2 表单类 34
4.3 把表单渲染成HTML 35
4.4 在视图函数中处理表单 37
4.5 重定向和用户会话 39
4.6 Flash消息 41
第5章 数据库 43
5.1 SQL数据库 43
5.2 NoSQL数据库 44
5.3 使用SQL还是NoSQL 45
5.4 Python数据库框架 45
5.5 使用Flask-SQLAlchemy管理数据库 46
5.6 定义模型 47
5.7 关系 49
5.8 数据库操作 50
5.8.1 创建表 50
5.8.2 插入行 51
5.8.3 修改行 52
5.8.4 删除行 52
5.8.5 查询行 52
5.9 在视图函数中操作数据库 54
5.10 集成Python shell 56
5.11 使用Flask-Migrate实现数据库迁移 56
5.11.1 创建迁移仓库 57
5.11.2 创建迁移脚本 57
5.11.3 更新数据库 58
第6章 电子邮件 59
使用Flask-Mail提供电子邮件支持 59
在Python shell中发送电子邮件 60
在程序中集成发送电子邮件功能 61
异步发送电子邮件 62
第7章 大型程序的结构 65
7.1 项目结构 65
7.2 配置选项 66
7.3 程序包 67
7.3.1 使用程序工厂函数 68
7.3.2 在蓝本中实现程序功能 69
7.4 启动脚本 71
7.5 需求文件 71
7.6 单元测试 72
7.7 创建数据库 74
第二部分 实例:社交博客程序
第8章 用户认证 77
8.1 Flask的认证扩展 77
8.2 密码安全性 77
8.3 创建认证蓝本 80
8.4 使用Flask-Login认证用户 81
8.4.1 准备用于登录的用户模型 81
8.4.2 保护路由 83
8.4.3 添加登录表单 83
8.4.4 登入用户 84
8.4.5 登出用户 86
8.4.6 测试登录 86
8.5 注册新用户 87
8.5.1 添加用户注册表单 87
8.5.2 注册新用户 89
8.6 确认账户 90
8.6.1 使用itsdangerous生成确认令牌 90
8.6.2 发送确认邮件 92
8.7 管理账户 95
第9章 用户角色 97
9.1 角色在数据库中的表示 97
9.2 赋予角色 99
9.3 角色验证 100
第10章 用户资料 103
10.1 资料信息 103
10.2 用户资料页面 104
10.3 资料编辑器 106
10.3.1 用户级别的资料编辑器 106
10.3.2 管理员级别的资料编辑器 108
10.4 用户头像 110
第11章 博客文章 115
11.1 提交和显示博客文章 115
11.2 在资料页中显示博客文章 118
11.3 分页显示长博客文章列表 118
11.3.1 创建虚拟博客文章数据 119
11.3.2 在页面中渲染数据 120
11.3.3 添加分页导航 121
11.4 使用Markdown和Flask-PageDown支持富文本文章 124
11.4.1 使用Flask-PageDown 124
11.4.2 在服务器上处理富文本 125
11.5 博客文章的固定链接 127
11.6 博客文章编辑器 128
第12章 关注者 131
12.1 再论数据库关系 131
12.1.1 多对多关系 131
12.1.2 自引用关系 133
12.1.3 高级多对多关系 134
12.2 在资料页中显示关注者 136
12.3 使用数据库联结查询所关注用户的文章 138
12.4 在首页显示所关注用户的文章 141
第13章 用户评论 145
13.1 评论在数据库中的表示 145
13.2 提交和显示评论 146
13.3 管理评论 149
第14章 应用编程接口 153
14.1 REST简介 153
14.1.1 资源就是一切 154
14.1.2 请求方法 154
14.1.3 请求和响应主体 155
14.1.4 版本 156
14.2 使用Flask提供REST Web服务 156
14.2.1 创建API蓝本 157
14.2.2 错误处理 157
14.2.3 使用Flask-HTTPAuth认证用户 159
14.2.4 基于令牌的认证 161
14.2.5 资源和JSON的序列化转换 162
14.2.6 实现资源端点 165
14.2.7 分页大型资源集合 167
14.2.8 使用HTTPie测试Web服务 168
第三部分 成功在望
第15章 测试 173
15.1 获取代码覆盖报告 173
15.2 Flask测试客户端 176
15.2.1 测试Web程序 176
15.2.2 测试Web服务 179
15.3 使用Selenium进行端到端测试 180
15.4 值得测试吗 184
第16章 性能 185
16.1 记录影响性能的缓慢数据库查询 185
16.2 分析源码 187
第17章 部署 189
17.1 部署流程 189
17.2 把生产环境中的错误写入日志 190
17.3 云部署 191
17.4 Heroku平台 191
17.4.1 准备程序 192
17.4.2 使用Foreman进行测试 196
17.4.3 使用Flask-SSLify启用安全HTTP 197
17.4.4 执行git push命令部署 198
17.4.5 查看日志 199
17.4.6 部署一次升级 199
17.5 传统的托管 200
17.5.1 架设服务器 200
17.5.2 导入环境变量 200
17.5.3 配置日志 201
第18章 其他资源 203
18.1 使用集成开发环境 203
18.2 查找Flask扩展 204
18.3 参与Flask开发 204
关于封面图 205
· · · · · · (收起)
读后感
这本书非常适合Flask 入门,虽然说是入门书,但是我个人认为可以作为初中级的参考书籍,因为作者对 Flask 的讲解把握的非常到位,所以可以将很多概念和扩展的使用讲解得通俗易懂,但是,又不乏给有心人留下很多空间去进行自我寻找资料扩展学习。 这本书我读了3遍了现在,也不...
这本书非常适合Flask 入门,虽然说是入门书,但是我个人认为可以作为初中级的参考书籍,因为作者对 Flask 的讲解把握的非常到位,所以可以将很多概念和扩展的使用讲解得通俗易懂,但是,又不乏给有心人留下很多空间去进行自我寻找资料扩展学习。 这本书我读了3遍了现在,也不...
https://www.jianshu.com/nb/21517223 ==========================================================================================================================================================
这本书非常适合Flask 入门,虽然说是入门书,但是我个人认为可以作为初中级的参考书籍,因为作者对 Flask 的讲解把握的非常到位,所以可以将很多概念和扩展的使用讲解得通俗易懂,但是,又不乏给有心人留下很多空间去进行自我寻找资料扩展学习。 这本书我读了3遍了现在,也不...
用户评价
坦白讲,市面上关于Web框架的书籍多如牛毛,很多都是浅尝辄止的“入门速成”。但这本书的深度让我印象深刻。它真正做到了“实战”二字。我指的是,它不仅仅教你如何用Flask跑起来“Hello World”,更重要的是,它深入探讨了在真实世界中,一个Web应用从原型走向生产环境所必须面对的挑战。无论是缓存策略的选择,还是异步任务的处理,作者都给出了成熟且经过市场检验的解决方案。这种对“健壮性”和“可扩展性”的强调,是区分一本优秀教程和一本平庸指南的关键。阅读过程中,我时常会停下来,对照自己过去的代码习惯进行反思,发现了不少可以优化和重构的地方。它的节奏把握得非常好,在你对某个概念感到困惑时,总能在接下来的章节中找到深入的剖析和实用的代码片段来印证。这更像是一部“工艺美术”的指南,教人如何精雕细琢自己的作品,而不是粗制滥造的流水线产品。
这本书给我的感觉就像是一次深入的数字建筑实践之旅。作者并没有满足于讲解枯燥的理论概念,而是直接把我们带到了代码的施工现场。我特别欣赏它在项目驱动学习上的设计,每一步操作都清晰可见,让你能立刻感受到从零搭建一个功能完备的Web应用是多么的直观和有成就感。比如,在处理用户认证和数据库交互的部分,那种“手把手”的指导,让我这个之前对后端开发有些畏惧的新手,也敢于放手去尝试更复杂的逻辑。它没有过度渲染高深的算法,而是聚焦于如何用Python的强大生态圈,特别是Flask框架的轻量与灵活,去解决实际的工程问题。读完后,我感觉自己掌握的不仅仅是几个API的使用,而是形成了一个清晰的、可复制的Web应用开发工作流程。书中对环境配置的细致说明,也帮我避开了许多初学者常犯的“坑”,让学习曲线变得平滑许多。这种注重实操、强调快速构建实际产品的理念,对于想尽快上手做点东西出来的人来说,简直是福音。
这本书的语言风格非常朴实,没有那种过度浮夸的技术宣传腔调,读起来让人感觉非常踏实和可靠。它更像是一本老工程师的笔记集合,里面充满了时间沉淀下来的智慧。我欣赏它在处理错误和异常时的那种坦诚——它不回避开发过程中必然会遇到的各种“意外情况”,反而将这些视为学习和成长的机会。例如,书中对路由设计和蓝图(Blueprint)的讲解,清晰地展示了如何将一个庞大的应用拆分成更小、更易于管理的模块,这种架构思维的培养,远比记住几条命令重要得多。而且,它似乎很清楚读者的知识背景差异,对于一些高级概念,总能找到巧妙的比喻或类比来降低理解门槛,确保即便是对Python有一定了解但缺乏Web经验的读者也能跟上节奏。读完后,我对未来自己独立承担项目时的信心指数直线上升,因为它提供了一个可以信赖的脚手架。
从技术细节的广度和深度来看,这本书无疑是近期我读过的Web开发类书籍中的佼佼者。它不仅仅是关于Flask的,更是关于“现代Web服务构建哲学”的一本书。作者对安全性的关注贯穿始终,这在很多入门材料中是被忽略的关键环节。比如,在处理表单提交和CSRF防护时,它不是简单地调用库函数,而是解释了背后的原理,让你理解为什么要这么做,以及不这么做会有什么风险。这种对安全意识的培养,在我看来是任何严肃的开发者都应具备的素养。此外,书中对测试和部署环节的探讨也十分到位,让你知道代码写完之后,如何确保它能在生产环境中稳定运行,以及如何用自动化测试来保证迭代的质量。它提供的是一个完整的生态视角,而不是局限于IDE里的一个运行按钮。总而言之,这是一本能让你从“代码实现者”蜕变为“系统构建者”的优质读物。
初次翻开这本厚厚的书,我原本预期会是那种堆砌了无数框架特性和晦涩定义的参考手册,但很快我就发现自己错了。这本书的叙事方式非常注重“为什么”和“怎么做”的结合。它没有把Flask仅仅当作一个工具箱展示,而是像一位经验丰富的导师,在你遇到特定需求时,引导你思考最佳的实现路径。比如,在讨论模板渲染和Jinja2集成时,它没有停留在表面,而是深入解析了如何设计可维护的视图函数和高效的模板继承结构,这对于构建大型、多人协作的项目至关重要。书中的例子不是那种为了演示功能而存在的孤立片段,而是串联成一个有生命力的应用,这使得知识的内化过程变得自然而然。我尤其喜欢它对HTTP协议基础概念的穿插讲解,这让整个Web开发不再是“黑箱操作”,而是建立在坚实的基础之上。这种对底层原理的尊重,让我在后续遇到其他框架时,也能迅速找到迁移和理解的切入点。
python果然比php有趣的多
这大概是入门Flask最最经典的教材了。可是我依然看得很吃力,我的自控力啊啊~到哪里去了
看了好几遍 用Flask兼职搞了一个项目 还挣了点钱
就学习怎么用flask来说,看文档更好。书里讲了很多第三方模块,有的已经过期了。只能看看为什么要这么用这些模块。bootstrap、用户认证模块什么的,功能很强大,但实在太麻烦,不如直接自己弄。
翻译一坨