深入理解Flask图书pdf下载
分享到:
深入理解Flask图书从一个简单的Flask项目入手,由浅入深地探讨了一系列实战问题,包括如何使用SQL.Alchemy和Jinja等工具进行Web开发;如何正确地设计扩展性强的Flask应用架构和搭建MVC环境;对于各种NoSQL数据库的特性,何时应该、何时不应该及如何使用它们;通过使用Flask扩展快速实现用户的身份系统、RESTful.API、NoSQL查询、后台管理等功能;如何创建自己的扩展;使用Celery编写异步任务,使用pytest进行单元测试等;最后介绍了如何部署上线,包括使用自己搭建的服务器或使用各种云服务,以及如何权衡和选择这些不同的解决方案。Flask 是在Python 用户中最为流行的Web 开发框架。
■ 搭建Python项目环境的优秀实践
■ 使用SQLAlchemy,以编程式对数据库进行查询
■ 在Jinja中开发页面模板
■ 在Flask中搭建MVC环境
■ 探索NoSQL,何时应该以及何时不应该使用,以及如何使用
■ 开发你自己的Flask扩展
■ 使用Celery创建异步任务
■ 使用py.test编写单元测试
译者
苏丹,来自山城重庆,毕业于北京师范大学;现豆瓣资深开发工程师,主要开发作品有豆瓣FM等;有多年Python编程实践经验;曾参与《Learning.Android中文版》一书翻译。Jack.Stouffer是一位有数年web应用开发经验的程序员。他在两年前将他所有的项目都切换到了Flask。他目前在位于密歇根州奥本山的Apollo.America工作,使用Python、Flask和JavaScript编写企业内部业务工具。Jack是开源技术的信徒与支持者,在GitHub上发布以他所推荐的zui佳实践原则编写的Flask范例时,立即成为了线上受欢迎的Flask代码库。Jack还曾经担任Packt.Publishing的《Flask.Framework Cookbook》一书的审稿人。
作者:(美)Jack Stouffer(杰克·史都华),苏丹
出版社:电子工业出版社
出版日期:2016-06-01
ISBN:9787121292316
字数:360000
页码:256
版次:1
装帧:平装
开本:16开
使用Git进行版本控制 1
安装Git 1
Git基础 2
使用pip管理Python包 4
在Windows上安装pip 4
在Mac OS X和Linux上安装Python包管理器pip 5
pip基本操作 6
用virtualenv的沙盒管理依赖 7
virtualenv基础 7
开始我们的项目 8
使用Flask Script 9
总结 10
第2章 使用SQLAlchemy创建数据模型 11
设置SQLAlchemy 11
Python安装包 12
Flask SQLAlchemy 12
我们的第1个数据模型 13
创建user表 15
CRUD 16
新增数据 16
读取数据 16
修改数据 19
删除数据 19
数据模型之间的关联 20
一对多 20
多对多 23
SQLAlchemy会话对象的方便之处 25
使用Alembic进行数据库迁移 26
总结 28
第3章 通过模板创建视图 29
Jinja的语法 29
过滤器 30
注释 34
if语句 34
循环 35
宏 36
Flask特有的变量和函数 37
创建视图 38
视图函数 38
编写和继承模板 41
Flask WTForms 45
WTForms基础 46
自定义检验器 48
发布评论 48
总结 51
第4章 使用蓝图创建控制器 52
请求的构建和销毁,以及全局变量 52
错误页面 53
使用类描述视图 53
方法视图 55
蓝图 55
总结 57
第5章 进阶的应用结构 58
模块项目 58
重构代码 59
应用的工厂模式 62
总结 64
第6章 保护应用安全 65
准备工作 65
修改用户模型 65
创建表单 67
创建视图 71
社交网络登录 76
使用会话 84
使用Flask Login 87
用户角色 90
总结 95
第7章 在Flask中使用NoSQL数据库 96
NoSQL数据库的种类 96
键值数据库 97
文档数据库 97
列式数据库 98
基于图的数据库 100
关系型数据库与NoSQL的比较 101
关系型数据库的优势 102
NoSQL数据库的优势 103
在什么情况下用什么数据库 104
在Flask中使用MongoDB 105
安装MongoDB 106
配置MongoEngine 106
定义文档 107
CRUD 112
NoSQL中的关联关系 117
利用NoSQL的强大能力 120
总结 126
第8章 构建RESTful API 127
REST是什么 127
构建RESTful Flask API 130
GET请求 131
格式化输出 132
请求中的参数 135
POST请求 138
身份认证 140
PUT请求 143
DELETE请求 146
总结 147
第9章 使用Celery编写异步任务 148
Celery是什么 148
配置Celery和RabbitMQ 150
在Celery中创建任务 151
运行Celery任务 154
Celery工作流 155
监控Celery 160
在Flower中通过网页进行监控 161
创建一个提醒应用 161
生成每周摘要 163
总结 167
第10章 有用的Flask扩展 168
Flask Script 168
Flask Debug Toolbar 170
Flask Cache 173
缓存函数和视图 174
缓存带参数的函数 175
缓存带有查询参数的路径 177
使用Redis作为缓存后端 177
使用memcached 作为缓存后端 178
Flask Assets 178
Flask Admin 181
编写基础管理页面 182
编写数据库管理页面 184
增强文章管理功能 185
编写文件系统管理页面 187
保护Flask Admin的安全 188
Flask Mail 189
总结 190
第11章 构建你自己的扩展 192
编写一个YouTube Flask扩展 192
创建Python包 196
通过Flask扩展修改响应数据 198
总结 200
第12章 测试Flask应用 201
什么是单元测试 201
怎样进行测试 202
对应用进行单元测试 202
测试路由函数 203
用户界面测试 208
测试覆盖率 213
测试驱动的开发 216
总结 218
第13章 部署Flask应用 219
部署在你自己的服务器上 219
使用fabric把代码推送到服务器 220
使用supervisor运行你的Web服务器 222
Gevent 224
Tornado 225
Nginx和uWSGI 226
Apache和uWSGI 229
部署在Heroku上 230
使用Heroku Postgres 231
在Heroku中使用Celery 232
在AWS上部署应用 233
这种系统带来的主要好处是:开发者能够使用他们想用的任何方式和工具,去设计他们的应用架构。另外,对于一些常见的通用功能,Flask没有以某种特定方式去实现,这意味着在Flask中,对标准库的使用会比在其他框架里多得多,这保证了通用功能的稳定性及针对其他Python程序员的可读性。由于Flask社区十分庞大,所以该社区提供的添加通用功能的方式非常多。本书的重点之一,就是介绍扩展Flask的方法,了解它们如何帮助我们避免重复造轮子。这些扩展的妙处在于,如果不需要那些额外的功能,就不用引入它们,这样我们的应用才会保持简洁、轻量。
这种系统的主要弊端是,大部分新的Flask用户不知道如何正确地规划大型应用的结构,最后弄出一大堆让人难以理解和维护的代码。所以本书的另一个重点是如何为Flask应用创建模型/视图/控制器(MVC)架构。
MVC体系在最初被发明时,主要用来设计桌面应用的用户界面。它将数据处理(model)、交互逻辑(controller)和用户界面(view)隔离成三层不同的组件。
这三层组件的隔离,使得程序员不用为每个网页重新实现一遍相同的功能,而是只要重用那些代码。比如,若是没有把处理数据的代码拆分到单独的函数中,那么我们不得不在每个页面的渲染函数里,把同样的数据库连接代码和SQL查询代码都写一遍。
本书中大量的调查研究资料及Web应用开发中各种踩坑的第1手痛苦经验,使得本书成为目前关于Flask的最详尽、实用的资料。真诚地希望你会喜欢它。
本书涵盖的内容
第1章,入门,帮助读者应用Python项目的最佳实践方式,并搭建一个Flask开发环境。读者会得到一个十分基础的Flask应用框架,在整本书中都会用到。
第2章,使用SQLAlchemy创建数据模型,介绍如何把Python的数据库工具SQLAlchemy与Flask结合起来使用,为用户的数据库建立一套面向对象的编程接口。
第3章,通过模板创建视图,讲解如何使用Flask的模板系统Jinja,在SQLAlchemy模型的支持下动态地创建HTML页面。
第4章,使用蓝图创建控制器,介绍如何使用Flask的蓝图(blueprint)功能来组织视图,同时避免代码冗余。
第5章,进阶的应用结构,结合在以上4章中学到的知识,详细讲解应该如何组织代码,以创建可维护性和可测试性都更好的应用结构。
第6章,保护应用安全,讲解如何使用各种Flask扩展,为每个视图添加基于权限的登录系统。
第7章,在Flask中使用NoSQL数据库,讲解什么是NoSQL数据库,以及在应用需要更强大的功能时,应该怎样将NoSQL数据库与之整合。
第8章,构建RESTful API,介绍如何通过一种安全和易用的方式,把应用数据库中的数据提供给第三方使用。
第9章,使用Celery创建异步任务,讲解如何把成本高或耗时长的任务挪到后台执行,让它们不拖慢应用。
第10章,有用的Flask扩展,讲解如何利用一些广受欢迎的扩展,让应用跑得更快、增加更多的功能,以及让调试变得方便、易行。
第11章,构建你自己的扩展,了解Flask扩展是如何工作的,以及怎样编写扩展。
第12章,测试Flask应用,讲解如何通过在应用中增加单元测试和用户界面测试,以保障程序质量,减少错误代码的数量。
第13章,部署Flask应用,介绍如何把已经完成的应用从开发环境中拿出来,部署到线上服务器中。
阅读本书前需要做的准备
阅读本书前,我们只需准备自己喜欢的一个文本编辑器和一个网页浏览器。另外,需要在机器上安装Python。
Windows、Mac OS X和Linux用户都可以很容易地学习本书的内容。
本书的目标读者
本书是为那些对Flask有一些了解,但希望把对Flask的理解程度从略懂提升到精通的Web开发者所准备的。
惯例
在本书中,我们会发现存在很多不同的文本格式,这些文本格式用于传达不同的信息。下面是一些不同的文本格式的例子,以及对这些文本格式所表达含义的解释。
文本中的代码关键词、数据库表名、文件夹名、文件名、文件扩展名、路径名、示例URL、用户输入和Twitter用户名会这样显示:
“first()和all()方法返回一个值,并且终止整个链式调用。”
一个代码块会这样显示:
class User(db.Model):
id = db.Column(db.Integer(), primary_key=True)
username = db.Column(db.String(255))
password = db.Column(db.String(255))
posts = db.relationship(
'Post',
backref='user',
lazy='dynamic'
)
当我们想让代码块中的某些部分吸引我们的注意力时,可以将相关的行或者内容以粗体显示:
from flask.ext.sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config.from_object(DevConfig)
db = SQLAlchemy(app)
所有命令行的输入或输出会这样显示:
$ python manage.py db init
新引入的概念和重要的关键词以黑体显示。在屏幕上看到的文本,比如在菜单或者对话框中出现的文字,也会这样显示:“单击另一个写着下载Bootstrap 的按钮,就会开始下载一个Zip文件。”
警告或者重要的说明会显示在这样的一个方框里。
提示或小技巧会这样显示。
下载示例代码
你可以从http://www.broadview.com.cn下载所有已购买的博文视点书籍的示例代码文件。
勘误表
虽然我们已经尽力谨慎地确保内容的准确性,但错误仍然存在。如果你发现了书中的错误,包括正文和代码中的错误,请告诉我们,我们会非常感激。这样,你不仅帮助了其他读者,也帮助我们改进后续的出版。如发现任何勘误,可以在博文视点网站相应图书的页面提交勘误信息。一旦你找到的错误被证实,你提交的信息就会被接受,我们的网站也会发布这些勘误信息。你可以随时浏览图书页面,查看已发布的勘误信息。
最近才知道,Flask在一开始竟然是作为愚人节玩笑诞生的,不过后来大受好评,并成为正式项目。我在最初接触Flask的时候,它也只是作为颇具先锋气质的“单文件微框架”而在Python世界被人们口口相传。但在很短的时间内,它在Python.Web开发者中开始流行起来,Flask社区迅速壮大,为它开发的插件数量也呈爆发式增长。如今,Flask在事实上已经成为轻量级Python.Web框架的代言人。不论是对于Python初学者,还是对于有若干年经验的Python 老手,使用Flask 搭建新项目都是非常有吸引力的选择。
不过即使再优秀的工具,仍然很容易被用错。作者在书中也反复强调了这一点。Flask提供的是一个最小化的Web框架,在此基础上你可以方便地使用你最喜欢的方式,添加你最得心应手的工具,形成一个专属于你和你的项目的高度定制化的强大工具套装。它不会逼你自己造轮子,因为在社区里几乎应有尽有;它也不会逼你用它附赠的轮子,因为它根本就没有准备赠品。对老司机来说,这样的框架可以最大程度地解放战斗力;对初学者来说,又可以利用社区中大量现成的资源很快上手。这样大家便都开心了,毕竟写程序最重要的就是开心。
但问题可能也隐藏在这里面:老手可能会根据自己以往熟悉的方式,把强大的战斗力释放在一些本来或许没有必要重复造轮子的地方;而新手则可能犯更多的错误:比如使用最原始的方式或者来自其他框架的方式搭建程序结构,结果当应用规模膨胀时面临困境;又或者引入了过多没必要引入的Flask扩展,导致代码难以测试和维护,稳定性降低,甚至出现冲突。另一个潜在的问题是,庞大的社区带来的好处毋庸多言,但如果大量地使用非官方库,则意味着需要承担社区开发者的水平参差不齐所带来的风险。有个程序员朋友吐槽说好多Flask扩展有个共同点,就是文档写得比代码棒。总的来说,如何正确地运用框架给予的高度自由,结合具体项目的需求,在用不用扩展和使用什么扩展之间做出最合理的选择,则是需要一定的经验的。而对于ORM、NoSQL、云服务等,同样存在用不用、用哪个、如何用的选择难题。
在我看来,在面向业务的开发中,深入二字的含义并不是指黑科技和奇技淫巧,而是具有预见性的解决方案选择。基于对当下项目需求的准确认知,采用最适合当前情况的不多不少的架构设计,在避免提前优化的同时对未来做好充分准备,对测试部署等流程的意义的深刻理解,才是深入和进阶,也正是本书的重点所在。实际上本书超纲的地方有点多,探讨的问题已经远不止Flask 了。
这是我翻译的第1本书。翻译这件事果然是比较特别的体验,跟写作和编程都很不一样。翻译一整本书对于像我这样的拖延症患者来说,是个极大的挑战,因为即使每次翻译一大段,进度条也几乎没有移动的意思;但如果拖下去,它就绝对不会结束。拖到最后时刻然后突击解决的常规办法已经不奏效了,无论如何,经过漫长的修炼,终于还是完成了。感谢张春雨编辑邀请我翻译本书,感谢Cookie对我不务正业的理解和支持,感谢公孙欠扁等朋友帮我解决一些英文问题。
水平所限,翻译中必定存在问题,请读者见谅。我在豆瓣、Twitter、微博等处的ID 都是su27,读后若有困惑或批评意见,欢迎找我讨论、吐槽。祝每位读者都能从本书中获益。珍爱生命,我用 Python!
苏丹
2016 年6 月
深入理解Flask图书禁用于商业用途!如果您喜欢《深入理解Flask图书》,请购买正版,谢谢合作。
爱学习,请到3322软件站 / 查找资源自行下载!
深入理解Flask图书编辑推荐:
Flask 是一种具有平缓学习曲线和庞大社区支持的微框架,利用它可以构建大规模的web应用。学习上手Flask非常轻松,但要深入理解却并不容易。本书从一个简单的Flask应用开始,通过解决若干实战中的问题,对一系列进阶的话题进行了探讨。书中使用MVC(模型-视图-控制器)架构对示例应用进行了转化重构,以演示如何正确地组织应用代码结构。有了可扩展性强的应用结构之后,接下来的章节使用Flask扩展为应用提供了额外的功能,包括用户登录和注册、NoSQL查询、REST.API、一套后台管理界面,以及其他特性。然后,你会学到如何使用单元测试,保障代码持续按照正确的方式工作,避免极具风险的猜测式编程。本书还会讨论可用于部署Flask应用的诸多不同平台,以及你必须考虑的——每个平台的优劣利弊。你会从本书中学到:■ 搭建Python项目环境的优秀实践
■ 使用SQLAlchemy,以编程式对数据库进行查询
■ 在Jinja中开发页面模板
■ 在Flask中搭建MVC环境
■ 探索NoSQL,何时应该以及何时不应该使用,以及如何使用
■ 开发你自己的Flask扩展
■ 使用Celery创建异步任务
■ 使用py.test编写单元测试
深入理解Flask图书作者简介:
Jack Stouffer 是一名有数年Web应用开发经验的程序员。他在两年前将自己所有的项目都切换到了Flask,目前在位于密歇根州奥本山的Apollo America工作,使用Python、Flask和JavaScript编写企业内部的业务工具。Jack是开源技术的信徒与支持者,他在GitHub上发布以他所推荐的最佳实践原则编写的Flask范例时,该范例立即成为线上最受欢迎的Flask代码库。Jack还曾经担任由Packt.Publishing出版的Flask.FrameworkCookbook 一书的审稿人。译者
苏丹,来自山城重庆,毕业于北京师范大学;现豆瓣资深开发工程师,主要开发作品有豆瓣FM等;有多年Python编程实践经验;曾参与《Learning.Android中文版》一书翻译。Jack.Stouffer是一位有数年web应用开发经验的程序员。他在两年前将他所有的项目都切换到了Flask。他目前在位于密歇根州奥本山的Apollo.America工作,使用Python、Flask和JavaScript编写企业内部业务工具。Jack是开源技术的信徒与支持者,在GitHub上发布以他所推荐的zui佳实践原则编写的Flask范例时,立即成为了线上受欢迎的Flask代码库。Jack还曾经担任Packt.Publishing的《Flask.Framework Cookbook》一书的审稿人。
深入理解Flask图书简介:
书名:深入理解FlasK作者:(美)Jack Stouffer(杰克·史都华),苏丹
出版社:电子工业出版社
出版日期:2016-06-01
ISBN:9787121292316
字数:360000
页码:256
版次:1
装帧:平装
开本:16开
深入理解Flask图书目录:
第1章 入门 1使用Git进行版本控制 1
安装Git 1
Git基础 2
使用pip管理Python包 4
在Windows上安装pip 4
在Mac OS X和Linux上安装Python包管理器pip 5
pip基本操作 6
用virtualenv的沙盒管理依赖 7
virtualenv基础 7
开始我们的项目 8
使用Flask Script 9
总结 10
第2章 使用SQLAlchemy创建数据模型 11
设置SQLAlchemy 11
Python安装包 12
Flask SQLAlchemy 12
我们的第1个数据模型 13
创建user表 15
CRUD 16
新增数据 16
读取数据 16
修改数据 19
删除数据 19
数据模型之间的关联 20
一对多 20
多对多 23
SQLAlchemy会话对象的方便之处 25
使用Alembic进行数据库迁移 26
总结 28
第3章 通过模板创建视图 29
Jinja的语法 29
过滤器 30
注释 34
if语句 34
循环 35
宏 36
Flask特有的变量和函数 37
创建视图 38
视图函数 38
编写和继承模板 41
Flask WTForms 45
WTForms基础 46
自定义检验器 48
发布评论 48
总结 51
第4章 使用蓝图创建控制器 52
请求的构建和销毁,以及全局变量 52
错误页面 53
使用类描述视图 53
方法视图 55
蓝图 55
总结 57
第5章 进阶的应用结构 58
模块项目 58
重构代码 59
应用的工厂模式 62
总结 64
第6章 保护应用安全 65
准备工作 65
修改用户模型 65
创建表单 67
创建视图 71
社交网络登录 76
使用会话 84
使用Flask Login 87
用户角色 90
总结 95
第7章 在Flask中使用NoSQL数据库 96
NoSQL数据库的种类 96
键值数据库 97
文档数据库 97
列式数据库 98
基于图的数据库 100
关系型数据库与NoSQL的比较 101
关系型数据库的优势 102
NoSQL数据库的优势 103
在什么情况下用什么数据库 104
在Flask中使用MongoDB 105
安装MongoDB 106
配置MongoEngine 106
定义文档 107
CRUD 112
NoSQL中的关联关系 117
利用NoSQL的强大能力 120
总结 126
第8章 构建RESTful API 127
REST是什么 127
构建RESTful Flask API 130
GET请求 131
格式化输出 132
请求中的参数 135
POST请求 138
身份认证 140
PUT请求 143
DELETE请求 146
总结 147
第9章 使用Celery编写异步任务 148
Celery是什么 148
配置Celery和RabbitMQ 150
在Celery中创建任务 151
运行Celery任务 154
Celery工作流 155
监控Celery 160
在Flower中通过网页进行监控 161
创建一个提醒应用 161
生成每周摘要 163
总结 167
第10章 有用的Flask扩展 168
Flask Script 168
Flask Debug Toolbar 170
Flask Cache 173
缓存函数和视图 174
缓存带参数的函数 175
缓存带有查询参数的路径 177
使用Redis作为缓存后端 177
使用memcached 作为缓存后端 178
Flask Assets 178
Flask Admin 181
编写基础管理页面 182
编写数据库管理页面 184
增强文章管理功能 185
编写文件系统管理页面 187
保护Flask Admin的安全 188
Flask Mail 189
总结 190
第11章 构建你自己的扩展 192
编写一个YouTube Flask扩展 192
创建Python包 196
通过Flask扩展修改响应数据 198
总结 200
第12章 测试Flask应用 201
什么是单元测试 201
怎样进行测试 202
对应用进行单元测试 202
测试路由函数 203
用户界面测试 208
测试覆盖率 213
测试驱动的开发 216
总结 218
第13章 部署Flask应用 219
部署在你自己的服务器上 219
使用fabric把代码推送到服务器 220
使用supervisor运行你的Web服务器 222
Gevent 224
Tornado 225
Nginx和uWSGI 226
Apache和uWSGI 229
部署在Heroku上 230
使用Heroku Postgres 231
在Heroku中使用Celery 232
在AWS上部署应用 233
深入理解Flask图书前言:
前言Flask是一个基于Python的Web框架,它的设计目的是提供Web开发所需要的最小功能子集。Flask与别的框架(尤其是采用其他编程语言的框架)的不同之处在于:它没有绑定诸如数据库查询或者表单处理等功能库,以及它们所组成的整个生态系统。它倾向于对这些功能的实现方式不做任何限定。这种系统带来的主要好处是:开发者能够使用他们想用的任何方式和工具,去设计他们的应用架构。另外,对于一些常见的通用功能,Flask没有以某种特定方式去实现,这意味着在Flask中,对标准库的使用会比在其他框架里多得多,这保证了通用功能的稳定性及针对其他Python程序员的可读性。由于Flask社区十分庞大,所以该社区提供的添加通用功能的方式非常多。本书的重点之一,就是介绍扩展Flask的方法,了解它们如何帮助我们避免重复造轮子。这些扩展的妙处在于,如果不需要那些额外的功能,就不用引入它们,这样我们的应用才会保持简洁、轻量。
这种系统的主要弊端是,大部分新的Flask用户不知道如何正确地规划大型应用的结构,最后弄出一大堆让人难以理解和维护的代码。所以本书的另一个重点是如何为Flask应用创建模型/视图/控制器(MVC)架构。
MVC体系在最初被发明时,主要用来设计桌面应用的用户界面。它将数据处理(model)、交互逻辑(controller)和用户界面(view)隔离成三层不同的组件。
这三层组件的隔离,使得程序员不用为每个网页重新实现一遍相同的功能,而是只要重用那些代码。比如,若是没有把处理数据的代码拆分到单独的函数中,那么我们不得不在每个页面的渲染函数里,把同样的数据库连接代码和SQL查询代码都写一遍。
本书中大量的调查研究资料及Web应用开发中各种踩坑的第1手痛苦经验,使得本书成为目前关于Flask的最详尽、实用的资料。真诚地希望你会喜欢它。
本书涵盖的内容
第1章,入门,帮助读者应用Python项目的最佳实践方式,并搭建一个Flask开发环境。读者会得到一个十分基础的Flask应用框架,在整本书中都会用到。
第2章,使用SQLAlchemy创建数据模型,介绍如何把Python的数据库工具SQLAlchemy与Flask结合起来使用,为用户的数据库建立一套面向对象的编程接口。
第3章,通过模板创建视图,讲解如何使用Flask的模板系统Jinja,在SQLAlchemy模型的支持下动态地创建HTML页面。
第4章,使用蓝图创建控制器,介绍如何使用Flask的蓝图(blueprint)功能来组织视图,同时避免代码冗余。
第5章,进阶的应用结构,结合在以上4章中学到的知识,详细讲解应该如何组织代码,以创建可维护性和可测试性都更好的应用结构。
第6章,保护应用安全,讲解如何使用各种Flask扩展,为每个视图添加基于权限的登录系统。
第7章,在Flask中使用NoSQL数据库,讲解什么是NoSQL数据库,以及在应用需要更强大的功能时,应该怎样将NoSQL数据库与之整合。
第8章,构建RESTful API,介绍如何通过一种安全和易用的方式,把应用数据库中的数据提供给第三方使用。
第9章,使用Celery创建异步任务,讲解如何把成本高或耗时长的任务挪到后台执行,让它们不拖慢应用。
第10章,有用的Flask扩展,讲解如何利用一些广受欢迎的扩展,让应用跑得更快、增加更多的功能,以及让调试变得方便、易行。
第11章,构建你自己的扩展,了解Flask扩展是如何工作的,以及怎样编写扩展。
第12章,测试Flask应用,讲解如何通过在应用中增加单元测试和用户界面测试,以保障程序质量,减少错误代码的数量。
第13章,部署Flask应用,介绍如何把已经完成的应用从开发环境中拿出来,部署到线上服务器中。
阅读本书前需要做的准备
阅读本书前,我们只需准备自己喜欢的一个文本编辑器和一个网页浏览器。另外,需要在机器上安装Python。
Windows、Mac OS X和Linux用户都可以很容易地学习本书的内容。
本书的目标读者
本书是为那些对Flask有一些了解,但希望把对Flask的理解程度从略懂提升到精通的Web开发者所准备的。
惯例
在本书中,我们会发现存在很多不同的文本格式,这些文本格式用于传达不同的信息。下面是一些不同的文本格式的例子,以及对这些文本格式所表达含义的解释。
文本中的代码关键词、数据库表名、文件夹名、文件名、文件扩展名、路径名、示例URL、用户输入和Twitter用户名会这样显示:
“first()和all()方法返回一个值,并且终止整个链式调用。”
一个代码块会这样显示:
class User(db.Model):
id = db.Column(db.Integer(), primary_key=True)
username = db.Column(db.String(255))
password = db.Column(db.String(255))
posts = db.relationship(
'Post',
backref='user',
lazy='dynamic'
)
当我们想让代码块中的某些部分吸引我们的注意力时,可以将相关的行或者内容以粗体显示:
from flask.ext.sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config.from_object(DevConfig)
db = SQLAlchemy(app)
所有命令行的输入或输出会这样显示:
$ python manage.py db init
新引入的概念和重要的关键词以黑体显示。在屏幕上看到的文本,比如在菜单或者对话框中出现的文字,也会这样显示:“单击另一个写着下载Bootstrap 的按钮,就会开始下载一个Zip文件。”
警告或者重要的说明会显示在这样的一个方框里。
提示或小技巧会这样显示。
下载示例代码
你可以从http://www.broadview.com.cn下载所有已购买的博文视点书籍的示例代码文件。
勘误表
虽然我们已经尽力谨慎地确保内容的准确性,但错误仍然存在。如果你发现了书中的错误,包括正文和代码中的错误,请告诉我们,我们会非常感激。这样,你不仅帮助了其他读者,也帮助我们改进后续的出版。如发现任何勘误,可以在博文视点网站相应图书的页面提交勘误信息。一旦你找到的错误被证实,你提交的信息就会被接受,我们的网站也会发布这些勘误信息。你可以随时浏览图书页面,查看已发布的勘误信息。
深入理解Flask图书序言:
译者序最近才知道,Flask在一开始竟然是作为愚人节玩笑诞生的,不过后来大受好评,并成为正式项目。我在最初接触Flask的时候,它也只是作为颇具先锋气质的“单文件微框架”而在Python世界被人们口口相传。但在很短的时间内,它在Python.Web开发者中开始流行起来,Flask社区迅速壮大,为它开发的插件数量也呈爆发式增长。如今,Flask在事实上已经成为轻量级Python.Web框架的代言人。不论是对于Python初学者,还是对于有若干年经验的Python 老手,使用Flask 搭建新项目都是非常有吸引力的选择。
不过即使再优秀的工具,仍然很容易被用错。作者在书中也反复强调了这一点。Flask提供的是一个最小化的Web框架,在此基础上你可以方便地使用你最喜欢的方式,添加你最得心应手的工具,形成一个专属于你和你的项目的高度定制化的强大工具套装。它不会逼你自己造轮子,因为在社区里几乎应有尽有;它也不会逼你用它附赠的轮子,因为它根本就没有准备赠品。对老司机来说,这样的框架可以最大程度地解放战斗力;对初学者来说,又可以利用社区中大量现成的资源很快上手。这样大家便都开心了,毕竟写程序最重要的就是开心。
但问题可能也隐藏在这里面:老手可能会根据自己以往熟悉的方式,把强大的战斗力释放在一些本来或许没有必要重复造轮子的地方;而新手则可能犯更多的错误:比如使用最原始的方式或者来自其他框架的方式搭建程序结构,结果当应用规模膨胀时面临困境;又或者引入了过多没必要引入的Flask扩展,导致代码难以测试和维护,稳定性降低,甚至出现冲突。另一个潜在的问题是,庞大的社区带来的好处毋庸多言,但如果大量地使用非官方库,则意味着需要承担社区开发者的水平参差不齐所带来的风险。有个程序员朋友吐槽说好多Flask扩展有个共同点,就是文档写得比代码棒。总的来说,如何正确地运用框架给予的高度自由,结合具体项目的需求,在用不用扩展和使用什么扩展之间做出最合理的选择,则是需要一定的经验的。而对于ORM、NoSQL、云服务等,同样存在用不用、用哪个、如何用的选择难题。
在我看来,在面向业务的开发中,深入二字的含义并不是指黑科技和奇技淫巧,而是具有预见性的解决方案选择。基于对当下项目需求的准确认知,采用最适合当前情况的不多不少的架构设计,在避免提前优化的同时对未来做好充分准备,对测试部署等流程的意义的深刻理解,才是深入和进阶,也正是本书的重点所在。实际上本书超纲的地方有点多,探讨的问题已经远不止Flask 了。
这是我翻译的第1本书。翻译这件事果然是比较特别的体验,跟写作和编程都很不一样。翻译一整本书对于像我这样的拖延症患者来说,是个极大的挑战,因为即使每次翻译一大段,进度条也几乎没有移动的意思;但如果拖下去,它就绝对不会结束。拖到最后时刻然后突击解决的常规办法已经不奏效了,无论如何,经过漫长的修炼,终于还是完成了。感谢张春雨编辑邀请我翻译本书,感谢Cookie对我不务正业的理解和支持,感谢公孙欠扁等朋友帮我解决一些英文问题。
水平所限,翻译中必定存在问题,请读者见谅。我在豆瓣、Twitter、微博等处的ID 都是su27,读后若有困惑或批评意见,欢迎找我讨论、吐槽。祝每位读者都能从本书中获益。珍爱生命,我用 Python!
苏丹
2016 年6 月
免责声明:
深入理解Flask图书来源于网络,仅用于分享知识,学习和交流!请下载完在24小时内删除。深入理解Flask图书禁用于商业用途!如果您喜欢《深入理解Flask图书》,请购买正版,谢谢合作。
爱学习,请到3322软件站 / 查找资源自行下载!
展开更多
深入理解Flask图书pdf下载下载地址
- 需先下载高速下载器:
- 专用下载:
- 其它下载: