新書推薦:
《
禅心与箭术:过松弛而有力的生活(乔布斯精神导师、世界禅者——铃木大拙荐)
》
售價:NT$
301.0
《
先进电磁屏蔽材料——基础、性能与应用
》
售價:NT$
1010.0
《
可转债投资实战
》
售價:NT$
454.0
《
王氏之死(新版,史景迁成名作)
》
售價:NT$
250.0
《
敢为天下先:三年建成港科大
》
售價:NT$
352.0
《
直观的经营:哲学视野下的动态管理
》
售價:NT$
407.0
《
长高食谱 让孩子长高个的饮食方案 0-15周岁儿童调理脾胃食谱书籍宝宝辅食书 让孩子爱吃饭 6-9-12岁儿童营养健康食谱书大全 助力孩子身体棒胃口好长得高
》
售價:NT$
214.0
《
身体自愈力:解决内在病因的身体智慧指南
》
售價:NT$
449.0
|
編輯推薦: |
Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活、轻便、安全且容易上手。Flask是目前十分流行的Web框架,采用Python编程语言来实现相关功能。Flask因为灵活、轻便且高效的特点被业界认可,同时拥有基于Werkzeug、Jinja2等开源库,拥有内置服务器和单元测试,适配RESTful且支持安全的Cookie,而且官方文档完整,便于学习掌握。
|
內容簡介: |
本书详细阐述了与Flask开发相关的基本解决方案,主要包括配置Flask基于Jinja2的模板机制Flask中的数据模型与视图协同工作WTFormsFlask中的身份验证机制构建RESTful APIFlask应用程序管理接口国际化和本地化调试、错误处理和测试部署和后期部署微服务和容器提示和技巧等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。 本书适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学教材和参考手册。
|
目錄:
|
第1章 配置Flask 1
1.1 利用virtualenv设置开发环境 3
1.1.1 实现方式 3
1.1.2 工作方式 3
1.1.3 更多内容 4
1.1.4 另请参阅 5
1.2 处理基本的配置问题 5
1.2.1 准备工作 5
1.2.2 实现方式 6
1.2.3 工作方式 7
1.3 配置基于类的设置 7
1.3.1 实现方式 7
1.3.2 工作方式 8
1.4 组织静态文件 8
1.4.1 实现方式 8
1.4.2 工作方式 9
1.4.3 更多内容 9
1.5 特定于部署的实例文件夹 10
1.5.1 实现方式 10
1.5.2 工作方式 11
1.6 视图和模型的组合 11
1.6.1 实现方式 11
1.6.2 工作方式 13
1.6.3 另请参阅 14
1.7 利用Blueprint创建模块化的Web应用程序 14
1.7.1 准备工作 14
1.7.2 实现方式 14
1.7.3 工作方式 15
1.7.4 另请参阅 16
1.8 通过setuptools安装Flask应用程序 16
1.8.1 实现方式 16
1.8.2 工作方式 17
1.8.3 另请参阅 17
第2章 基于Jinja2的模板机制 19
2.1 引导推荐的布局 20
2.1.1 准备工作 20
2.1.2 实现方式 20
2.1.3 工作方式 21
2.2 实现块组合和布局继承 22
2.2.1 准备工作 22
2.2.2 实现方式 22
2.2.3 工作方式 26
2.3 创建自定义上下文处理器 28
2.4 创建自定义Jinja2过滤器 29
2.4.1 实现方式 29
2.4.2 工作方式 30
2.4.3 另请参阅 31
2.5 为表单创建自定义宏 31
2.5.1 准备工作 31
2.5.2 实现方式 31
2.6 高级日期和时间格式 32
2.6.1 准备工作 32
2.6.2 实现方式 33
2.6.3 另请参阅 34
第3章 Flask中的数据模型 35
3.1 创建SQLAlchemy DB实例 35
3.1.1 准备工作 36
3.1.2 实现方式 36
3.1.3 更多内容 37
3.1.4 另请参阅 38
3.2 创建基本的产品模型 38
3.2.1 实现方式 38
3.2.2 工作方式 41
3.2.3 另请参阅 41
3.3 创建关系分类模型 41
3.3.1 实现方式 41
3.3.2 另请参阅 44
3.4 利用Alembic和Flask-Migrate迁移数据库 44
3.4.1 准备工作 45
3.4.2 实现方式 45
3.4.3 工作方式 46
3.4.4 另请参阅 47
3.5 基于Redis的索引模型数据 47
3.5.1 准备工作 48
3.5.2 实现方式 48
3.5.3 工作方式 49
3.6 基于MongoDB的NoSQL方式 49
3.6.1 准备工作 49
3.6.2 实现方式 50
3.6.3 另请参阅 52
第4章 与视图协同工作 53
4.1 编写基于函数的视图和URL路由 53
4.1.1 准备工作 53
4.1.2 实现方式 54
4.1.3 工作方式 55
4.1.4 更多内容 55
4.2 编写基于类的视图 56
4.2.1 准备工作 56
4.2.2 实现方式 56
4.2.3 工作方式 57
4.2.4 更多内容 57
4.2.5 另请参阅 58
4.3 实现URL路由机制和基于产品的分页机制 58
4.3.1 准备工作 58
4.3.2 实现方式 58
4.3.3 另请参阅 60
4.4 渲染至模板 60
4.4.1 准备工作 60
4.4.2 实现方式 60
4.4.3 工作方式 64
4.4.4 另请参阅 65
4.5 处理XHR请求 65
4.5.1 准备工作 65
4.5.2 实现方式 65
4.5.3 工作方式 67
4.6 使用装饰器处理请求 67
4.6.1 准备工作 67
4.6.2 实现方式 67
4.6.3 另请参阅 68
4.7 创建自定义的404和500处理程序 68
4.7.1 准备工作 69
4.7.2 实现方式 69
4.7.3 工作方式 69
4.7.4 更多内容 70
4.8 闪动消息以获得更好的用户反馈 70
4.8.1 准备工作 70
4.8.2 实现方式 70
4.8.3 工作方式 73
4.9 实现基于SQL的搜索机制 73
4.9.1 准备工作 74
4.9.2 实现方式 74
4.9.3 工作方式 75
第5章 WTForms 77
5.1 将SQLAlchemy模型数据表示为表单 77
5.1.1 准备工作 78
5.1.2 实现方式 78
5.1.3 工作方式 80
5.1.4 另请参阅 80
5.2 验证服务器端上的字段 80
5.2.1 实现方式 81
5.2.2 工作方式 82
5.2.3 更多内容 83
5.2.4 另请参阅 83
5.3 创建公共表单集合 83
5.3.1 实现方式 84
5.3.2 工作方式 85
5.4 创建自定义字段和验证 86
5.4.1 实现方式 86
5.4.2 工作方式 87
5.4.3 更多内容 87
5.5 创建自定义微件 88
5.5.1 实现方式 88
5.5.2 工作方式 89
5.5.3 另请参阅 89
5.6 通过表单上传文件 90
5.6.1 实现方式 90
5.6.2 工作方式 92
5.7 保护应用程序免受跨站点请求伪造(CSRF) 93
5.7.1 实现方式 93
5.7.2 工作方式 95
第6章 Flask中的身份验证机制 97
6.1 创建简单的基于会话的身份验证 97
6.1.1 准备工作 98
6.1.2 实现方式 98
6.1.3 工作方式 103
6.1.4 另请参阅 104
6.2 基于Flask-Login扩展的身份验证 104
6.2.1 准备工作 105
6.2.2 实现方式 105
6.2.3 工作方式 108
6.2.4 更多内容 108
6.2.5 另请参阅 108
6.3 使用Facebook进行身份验证 108
6.3.1 准备工作 108
6.3.2 实现方式 110
6.3.3 工作方式 112
6.4 使用Google进行身份验证 112
6.4.1 准备工作 113
6.4.2 实现方式 114
6.4.3 工作方式 115
6.5 使用Twitter进行身份验证 115
6.5.1 准备工作 116
6.5.2 实现方式 116
6.5.3 工作方式 118
6.6 基于LDAP的身份验证机制 118
6.6.1 准备工作 118
6.6.2 实现方式 119
6.6.3 工作方式 122
6.6.4 另请参阅 123
第7章 构建RESTful API 125
7.1 创建基于类的REST接口 126
7.1.1 准备工作 126
7.1.2 实现方式 126
7.1.3 工作方式 127
7.2 创建基于扩展的REST接口 127
7.2.1 准备工作 128
7.2.2 实现方式 128
7.2.3 工作方式 129
7.2.4 另请参阅 129
7.3 创建完整的RESTful API 130
7.3.1 准备工作 130
7.3.2 实现方式 130
7.3.3 工作方式 132
第8章 Flask应用程序管理接口 135
8.1 创建简单的CRUD接口 135
8.1.1 准备工作 136
8.1.2 实现方式 136
8.1.3 工作方式 139
8.2 使用Flask-Admin扩展 141
8.2.1 准备工作 141
8.2.2 实现方式 141
8.2.3 工作方式 142
8.2.4 更多内容 142
8.3 利用Flask-Admin注册模型 143
8.3.1 准备工作 143
8.3.2 实现方式 143
8.3.3 工作方式 145
8.4 创建自定义表单和操作 146
8.4.1 准备工作 146
8.4.2 实现方式 146
8.4.3 工作方式 148
8.5 使用WYSIWYG(所见即所得)编辑器 148
8.5.1 准备工作 149
8.5.2 实现方式 149
8.5.3 工作方式 150
8.5.4 另请参阅 151
8.6 创建用户角色 151
8.6.1 准备工作 151
8.6.2 实现方式 152
8.6.3 工作方式 154
第9章 国际化和本地化 155
9.1 添加一种新语言 155
9.1.1 准备工作 155
9.1.2 实现方式 156
9.1.3 工作方式 158
9.1.4 更多内容 159
9.1.5 另请参阅 159
9.2 实现延迟处理和gettextngettext函数 159
9.2.1 准备工作 160
9.2.2 实现方式 160
9.3 实现全球语言切换操作 161
9.3.1 准备工作 161
9.3.2 实现方式 162
9.3.3 工作方式 163
9.3.4 另请参阅 163
第10章 调试、错误处理和测试 165
10.1 设置基本的文件日志系统 166
10.1.1 准备工作 166
10.1.2 实现方式 166
10.1.3 工作方式 167
10.1.4 更多内容 168
10.1.5 另请参阅 168
10.2 在出现错误时发送电子邮件 168
10.2.1 准备工作 169
10.2.2 工作方式 169
10.2.3 工作方式 170
10.2.4 更多内容 170
10.3 使用Sentry监视异常 170
10.3.1 准备工作 170
10.3.2 实现方式 170
10.3.3 工作方式 172
10.4 基于pdb的调试机制 172
10.4.1 准备工作 172
10.4.2 实现方式 173
10.4.3 工作方式 173
10.4.4 另请参阅 173
10.5 创建简单的测试 174
10.5.1 准备工作 174
10.5.2 实现方式 174
10.5.3 工作方式 175
10.5.4 另请参阅 175
10.6 针对视图和逻辑编写多项测试 176
10.6.1 准备工作 176
10.6.2 实现方式 176
10.6.3 工作方式 179
10.7 nose库集成 179
10.7.1 准备工作 180
10.7.2 实现方式 180
10.7.3 另请参阅 180
10.8 使用Mocking避免访问API 181
10.8.1 准备工作 181
10.8.2 实现方式 182
10.8.3 工作方式 184
10.8.4 另请参阅 184
10.9 确定测试覆盖率 184
10.9.1 准备工作 184
10.9.2 实现方式 185
10.9.3 工作方式 186
10.9.4 另请参阅 187
10.10 使用性能分析查找瓶颈 187
10.10.1 准备工作 187
10.10.2 实现方式 187
10.10.3 工作方式 187
第11章 部署和后期部署 189
11.1 基于Apache的部署机制 189
11.1.1 准备工作 190
11.1.2 实现方式 191
11.1.3 工作方式 192
11.1.4 更多内容 192
11.1.5 另请参阅 193
11.2 基于uWSGI和Nginx的部署机制 193
11.2.1 准备工作 193
11.2.2 实现方式 193
11.2.3 另请参阅 195
11.3 基于Gunicorn和Supervisor的部署机制 195
11.3.1 准备工作 196
11.3.2 实现方式 196
11.3.3 工作方式 197
11.3.4 另请参阅 197
11.4 基于Tornado的部署 198
11.4.1 准备工作 198
11.4.2 实现方式 198
11.4.3 工作方式 199
11.5 针对文件上传使用S3存储 199
11.5.1 准备工作 199
11.5.2 实现方式 199
11.5.3 工作方式 201
11.5.4 另请参阅 201
11.6 基于Heroku的部署 201
11.6.1 准备工作 201
11.6.2 实现方式 202
11.6.3 准备工作 204
11.6.4 更多内容 204
11.7 基于AWS Elastic Beanstalk的部署机制 204
11.7.1 准备工作 204
11.7.2 实现方式 205
11.7.3 工作方式 206
11.8 利用New Relic管理和监控应用程序 208
11.8.1 准备工作 208
11.8.2 实现方式 209
11.8.3 工作方式 210
11.8.4 另请参阅 210
第12中 微服务和容器 211
12.1 基于Docker的容器化机制 211
12.1.1 准备工作 212
12.1.2 实现方式 213
12.1.3 工作方式 215
12.1.4 另请参阅 215
12.2 基于Kubernetes的编排容器 216
12.2.1 准备工作 216
12.2.2 实现方式 216
12.2.3 工作方式 218
12.2.4 更多内容 219
12.2.5 另请参阅 220
12.3 AWS Lambda上基于Zappa的无服务器操作 220
12.3.1 准备工作 220
12.3.2 实现方式 220
12.3.3 工作方式 223
12.3.4 另请参阅 224
第13章 提示和技巧 225
13.1 实现基于Whoosh的全文本搜索 225
13.1.1 准备工作 226
13.1.2 实现方式 226
13.1.3 工作方式 227
13.1.4 另请参阅 227
13.2 实现基于Elasticsearch的全文本搜索 227
13.2.1 准备工作 228
13.2.2 实现方式 228
13.2.3 工作方式 230
13.3 与信号协同工作 230
13.3.1 准备工作 230
13.3.2 实现方式 231
13.3.3 工作方式 232
13.3.4 另请参阅 232
13.4 在应用程序中使用缓存 232
13.4.1 准备工作 233
13.4.2 实现方式 233
13.4.3 工作方式 233
13.4.4 更多内容 234
13.4.5 另请参阅 234
13.5 实现Flask应用程序的电子邮件支持 234
13.5.1 准备工作 235
13.5.2 实现方式 235
13.5.3 工作方式 235
13.5.4 更多内容 236
13.5.5 另请参阅 237
13.6 了解异步操作 237
13.6.1 准备工作 237
13.6.2 实现方式 237
13.6.3 工作方式 238
13.7 与Celery协同工作 238
13.7.1 准备工作 238
13.7.2 实现方式 238
13.7.3 工作方式 240
13.7.4 另请参阅 240
|
內容試閱:
|
在本书第1版出版后的5年里,我收到了无数读者的电子邮件、信件和反馈信息,并对本书提出了表扬、批评以及改进意见。与此同时,技术本身也发生了较大的变化:当前,Python 3已成为主流,而Python 2正在逐步被淘汰。Flask于2018年4月发布了第1个主要版本,即1.0版。但随着时间的推进,许多库和包逐渐过时且未得到应有的维护,相应地,新的库和包则演变为其替代品或附件。与此同时,应用程序部署和管理体系结构设计也发生了巨大的变化,可伸缩性已成为最重要的问题。
对于初学者来说,Flask是一个用Python编写的轻量级 Web应用程序微框架。Flask利用Python的灵活性为Web应用程序开发提供了一个相对简单的模板。据此,用户甚至能够编写简单的单页(one-page)应用程序,并对其进行扩展进而构建大型应用程序。
Flask包含了丰富的文档内容以及活跃的社区,且涵盖了许多扩展及其相关文档。本书将采取不同的方法介绍Flask框架、实际用途和应用程序。
本书通过一系列的具体案例帮助读者了解Flask的各项功能及其扩展。具体来说,本书首先讨论Flask应用程序的各项配置。在学习ORM和视图层之前,读者将了解如何使用模板。接下来,在考查了各种身份验证技术后,将学习如何使用Flask编写RESTful API、如何编写管理接口、在Flask中调试和记录错误、应用程序的国际化、测试技术,以及Apache、Tornado、Heroku和AWS Elastic Beanstalk等平台上的各种部署和部署后的技术。最后,作为本书第2版的补充内容,读者将了解流行的微服务工具,如Docker、Kubernetes和AWS Lambda,它们可用于构建高度可伸缩的服务。
在阅读完本书后,读者将能够利用Flask这一微框架编写小型和大型应用程序,并通过业界标准实践方案对其进行扩展。
本书涵盖了大量的研究案例以及开发经验,这也是本书的价值所在。
适用读者
如果读者是一名Web开发人员,希望更多地了解如何在Flask中开发应用程序,并使用行业标准对其进行扩展,那么本书将十分适合您。另外,如果读者已对Flask扩展有所了解,并希望实现最佳应用,那么本书也可视为一个方便的工具。这里,假设读者已了解Python和Flask的基本知识。
本书内容
第1章将考查Flask的配置方式,以满足各种项目需求,其中包括如何配置开发环境以及各种配置技术。
第2章将从Flask的角度介绍Jinja2模板的基础知识,并解释如何使用模块和可扩展模板编写应用程序。
第 3 章将处理应用程序中较为重要的内容,即与数据库系统的交互行为。本章将考查Falsk与数据库系统间的连接方式、定义模型以及查询数据库以检索和提供数据。
第4章将讨论如何与Web请求进行交互,以及交互的响应结果,其中包含与处理请求及其最佳设计方式相关的各种方法。
第5章将介绍表单处理机制,这也是Web应用程序的重要组成部分之一。同样,表单的验证过程也十分重要。对此,以交互方式将这些信息呈现给用户将提升应用程序的使用价值。
第6章将处理身份验证问题,这一问题有时可视为安全不安全应用程序间的界线。本章将详细介绍多种社交文章和企业网站的登录技术。
第7章将解释REST协议,随后使用库为Flask应用程序编写RESTful API,以及完全定制的API。
第8章将专注于为Flask的应用程序编写管理视图。首先编写完全定制的视图,然后在扩展的帮助下进行编写。
第9章将扩展Flask应用程序的应用范围,并介绍多语言的支持方式。
第 10 章将对应用程序进行测试。通过错误处理机制和测试方法,可提升应用程序的健壮性;另外,调试机制也可简化开发人员的处理过程。
第 11 章将介绍应用程序的部署方法和工具,随后考查应用程序的监控机制,以对应用程序的性能予以跟踪。
第12章将利用诸如Docker、Kubernetes和AWS Lambda等工具,并采用微服务模式构建和部署应用程序。
第13章将主要介绍一些操作技巧,包括全文搜索和缓存机制。最后,我们将在Flask应用程序中针对特定任务实现异步处理。
背景知识
在大多数情况下,读者仅需要一个一般配置的计算机系统即可运行本书中的代码。通常,我们对操作系统并无特殊要求,但Linux和macOS要优于Windows系统。
假设读者已对Python 3有所了解,这将十分有用;或者至少应该在运行本书代码示例的机器上安装Python 3。
读者可参考书中提供的参考文献和链接,以进一步了解所用库和工具方面的知识。
考虑到可能涉及的格式问题,读者不要简单地复制和粘贴本书中的代码。为了避免不必要的问题,以及加深学习过程,建议读者采用手动方式输入代码。
下载示例代码文件
读者可通过www.packt.com账户下载示例代码文件。如果读者已购买了本书,可访问www.packt.comsupport,经注册后,我们以电子邮件的方式将示例代码文件发送给读者。
除此之外,还可通过下列步骤下列代码文件:
(1)访问www.packt.com,登录或注册用户。
(2)选择SUPPORT选项卡。
(3)单击Code Downloads & Errata。
(4)在Search框内输入书名,并遵循后续指令。
在下载了文件后,利用下列软件的最新版本解压文件:
? WinRAR7-Zip(Windows操作系统)。
? ZipegiZipUnRarX(macOS操作系统)。
? 7-ZipPeaZip(Linux操作系统)。
另外,读者也可访问https:github.comFlask-Framework-Cookbook获取本书的代码包。
此外,读者还可访问https:github.comPacktPublishingFlask-Framework-Cookbook-Second- Edition获得本书源代码。
同时,我们还提供了其他书籍的代码包和视频资源,对应网址为https:github.com PacktPublishing。
下载彩色图像
读者可访问https:static.packt-cdn.comdownloads9781789951295_ColorImages.pdf查看本书中的彩色图像(PDF格式)。
本书约定
代码块通过下列方式显示:
from flask import Flask
app = Flask__name__
@app.route''''
def hello_world:
return ''Hello to the World of Flask!''
if __name__ == ''__main__'':
app.run
代码中的重点内容则采用黑体表示,如下所示。
from flask_wtf.file import FileField, FileRequired
class Productdb.Model:
image_path = db.Columndb.String255
def __init__self, name, price, category, image_path:
self.image_path = image_path
class ProductFormNameForm:
image = FileField''Product Image'', validators=[FileRequired]
命令行输入和输出结果则采用下列方式表示:
$ pip3 install Flask
图标表示较为重要的说明事项。
图标表示提示信息和操作技巧。
读者反馈和客户支持
欢迎读者对本书的建议或意见予以反馈。
对此,读者可向feedback@packtpub.com发送电子邮件,并以书名作为电子邮件标题。若读者对本书有任何疑问,均可发送电子邮件至questions@packtpub.com,我们将竭诚为您服务。
若读者针对某项技术具有专家级的见解,抑或计划撰写书籍或完善某部著作的出版工作,则可访问www.packtpub.comauthors。
勘误表
尽管我们在最大程度上做到尽善尽美,但错误依然在所难免。如果读者发现谬误之处,无论是文字错误抑或是代码错误,还望不吝赐教。对此,读者可访问http:www.packtpub. comsubmit-errata,选取对应书籍,单击Errata Submission Form超链接,并输入相关问题的详细内容。
版权须知
一直以来,互联网上的版权问题从未间断,Packt出版社对此类问题异常重视。若读者在互联网上发现本书任意形式的副本,请告知网络地址或网站名称,我们将对此予以处理。关于盗版问题,读者可发送电子邮件至copyright@packtpub.com。
问题解答
若读者对本书有任何疑问,均可发送电子邮件至questions@packtpub.com,我们将竭诚为您服务。
自Google宣布Kotlin为官方支持的Android语言以来,该语言的受欢迎程度大幅上升,这也反映了Kotlin是一种设计良好的现代编程语言,并适用于多个开发领域,包括Web、移动开发以及原生开发。由于受欢迎程度的不断提高,多年以来,Kotlin用户一直保持着稳定的增长。
|
|