描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111606598
(2)本书获得Flask开发团队核心维护者高度评价
(3)内容全面,从基础知识到进阶实战,再到源码分析,提供完善的Flask学习路径;
(4)实战性强,5个综合性案例将不同难度层级的知识点及具体原理串联起来,让你在开发技巧、原理实现和编程思想上都获得相应提升;
(5)技术新颖,Flask框架本身,以及其他相关Python框架,全部使用的是新发布的技术版本。
内容上,本书从基础知识到进阶实战,再到Flask原理和工作机制解析,涵盖完整的Flask Web开发学习路径,非常全面。
实战上,本书从开发环境的搭建、项目的建立与组织到程序的编写,再到自动化测试、性能优化,*后到生产环境的搭建和部署上线,详细讲解完整的Flask Web程序开发流程,用5个综合性案例将不同难度层级的知识点及具体原理串联起来,让你在开发技巧、原理实现和编程思想上都获得相应的提升。
技术上,不仅Flask使用的是新发布的稳定版,而且连相关的Python工具包使用的也是全新的版本,同时对未来可能有变化的地方进行了说明,以此确保本书内容在一定时间内不会过时。
本书共16章,分为三部分。
第壹部分 基础篇(第1~6章)
通过大量的程序实例详细介绍了Flask的所有基础知识,同时在每章的后面又提供了一些进阶技巧,供进阶读者学习。
第二部分 实战篇(第7~11章)
通过5个真实的项目案例来串接和阐释不同的知识点,难度逐渐递增。这5个案例分别为:留言板SayHello、个人博客Bluelog、图片社交网站Albumy、待办事项程序Todoism和聊天室CatChat。
第三部分 进阶篇(第12~16章)
首先介绍了Flask程序的部署流程:测试、性能优化和部署上线;然后通过一个真实的实例讲解了Flask扩展的开发,*后以源代码为切入点深入剖析了Flask的实现原理与主要工作机制。
第一部分 基础篇
第1章 初识Flask2
1.1 搭建开发环境3
1.1.1 Pipenv工作流3
1.1.2 安装Flask7
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 Shell20
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与HTTP27
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 来一块Cookie46
2.3.4 session:安全的Cookie49
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中的Jinja2101
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 SQL139
5.1.2 NoSQL139
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 CRUD147
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-Mail179
6.1.2 构建邮件数据182
6.1.3 发送邮件182
6.2 使用事务邮件服务SendGird183
6.2.1 注册SendGird183
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
第二部分 实战篇
第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.js209
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
Flask的logo
Flask的图标虽然看起来很像辣椒,但其实它是角状的容器(powder horn)。
Flask仅保留了Web框架的核心,其他的功能都交给扩展实现。如果没有合适的扩展,你甚至可以自己编写。Flask不会替你做决定,也不会限制你的选择。它足够轻量,你可以只用5行就编写出一个 简单的Web程序,但并不简陋,它能够适应各类项目的开发。
因为Flask的灵活性,越来越多的公司选择Flask作为Web框架,甚至开始从Django迁移到Flask。使用Flask的公司在国外有Netflix、Reddit、Twilio、Mailgun等,在国内则有豆瓣、果壳、下厨房等,这说明Flask能经受大型项目的挑战,能够适应各种需求。下图列出了部分使用Flask的公司。
你可以在StackShare上查看完整的使用Flask的公司列表(https://stackshare.io/flask)。
使用Flask的公司
在国内,越来越多的Python程序员开始关注和学习Flask。对于国内的程序员来说,相关书籍仅有一两本,内容上也过于陈旧和单薄,希望本书可以填补这一空白。本书提供了学习Flask的完整路径,从基础内容到进阶实践,再到源码分析。同时也安排了丰富的示例程序,让读者可以通过亲自实践来更快地掌握Flask开发。
Flask自2010年开源以来在Google上的搜索趋势
目标读者
在技术层面,本书适合所有Python程序员(了解Python即可)阅读,包括已经学习过其他Python Web框架(比如Django)的读者和没有接触过Web框架的读者。
在难度水平层面,本书适合新手以及中级读者阅读。新手会在这里学到Flask的基础内容,并且通过丰富、完善的实例学习Flask开发的方方面面;中级读者则可以通过阅读和实践进阶内容来进一步提高Flask开发能力。
综上所述,本书主要适合以下几类读者:
了解Python基本语法,想要自己动手做网站的编程爱好者。
熟悉Python,想要从事Python Web开发的后端工程师、运维工程师和爬虫工程师。
想要从Django等其他Python Web框架转向Flask的Python工程师。
本书主要特点
本书主要有三个显著的特点:
(1)内容全面
本书内容覆盖了Flask Web开发的完整路径:从基础知识的学习,到不同类型和复杂程度的程序的编写,再到代码的测试优化以及Flask源码分析;从基础的内容管理,到用户认证和权限管理,再到Flask与JavaScript的数据交互、Web API的编写以及WebSocket的应用等。
(2)实践丰富
本书包含大量代码片段,并附带多个完整可运行的示例程序。在本书第一部分的第2~6章均分别提供一个示例程序;第二部分则会通过介绍5个比较完善的Flask项目来讲解各个方面的进阶知识;在第三部分还会通过一个真实的扩展来讲解Flask扩展开发。通过将各类知识融入实际的项目开发实践中,可以让你更直观地了解具体的代码实现,并且快速应用到实际开发中。
(3)内容 新
本书的另一个特点就是内容保证 新。书中的代码和示例程序都基于Flask 新发布的稳定版1.0。书中涉及的其他Pyhton包和前端框架(Boostrap、Materialize等)全部使用 新版本,并且对未来可能会有的变化会加以说明。这些特点可以保证书中的内容在一定时间内不会过时。对于其他书籍或教程中存在的关于Flask的误区,本书也会逐一纠正说明。
除了使用的工具保持 新,本书还引入了Python和Flask开发中的新变化,比如Flask的命令行系统、新的Python包管理工具(Pipenv)、新的包上传工具(twine)、新的PyPI站点(https://pypi.org)、在PyPI上使用Markdown格式的README……
本书核心内容
本书由三部分组成,分别为基础篇、实战篇、进阶篇,共16章。本书章节经过精心设计,力求让读者可以循序渐进地掌握Flask开发的基础知识和技巧。
第一部分:基础篇。介绍Flask开发相关的基础知识。
第1章:搭建开发环境,编写一个 小的Flask程序并运行它,了解Flask基本知识。
第2章:介绍Flask与HTTP的交互方式以及相关的Flask功能。
第3章:介绍Jinja2模板的使用。
第4章:介绍Web表单的创建和表单数据的验证。
第5章:介绍在Flask程序中使用数据库进行CRUD操作。
第6章:介绍在Flask程序中发送电子邮件的几种方式。
第二部分:实战篇。通过几个示例程序来介绍Flask开发中各类功能的实现方法和技巧。
第7章:通过一个简单的留言板程序SayHello介绍Web开发的基本流程和基本的项目管理方式,对第一部分的基础知识进行简单回顾。
第8章 :通过个人博客程序Bluelog介绍CRUD操作、用户认证、文章评论、管理后台等功能。
第9章:通过图片社交程序Albumy介绍用户注册和认证、用户权限管理、图片上传与处理、用户头像、复杂的数据库关系、复杂的数据库查询、全文搜索等内容。
第10章:通过待办事项程序Todoism介绍单页应用、国际化与本地化、Web API、OAuth服务器端实现等内容。
第11章:通过聊天室程序CatChat介绍Websocket应用、OAuth客户端实现(第三方登录)、Mark
评论
还没有评论。