每月好书深入理解FlaskPyt

和老规矩一样,本月月考的奖品就是《深入理解Flask》两本。不知道什么是月考的同学,请补习下面文章:

每月送书活动来袭,免费哦!

另外,为了避免每次月考都是相同的同学获得最高奖,从上次月考开始,获得过最高奖(得到过书)的同学,将不能获得最高奖,也就是说一个人只能获得一次最高奖。

规则就说到这里,下面是书籍介绍。

------------------------------------割------------------------------------------------

JackStouffr(杰克·史都华)著苏丹译ISBN-7---年7月出版定价:79.00元页16开

编辑推荐

Flask是一种具有平缓学习曲线和庞大社区支持的微框架,利用它可以构建大规模的wb应用。学习上手Flask非常轻松,但要深入理解却并不容易。本书从一个简单的Flask应用开始,通过解决若干实战中的问题,对一系列进阶的话题进行了探讨。书中使用MVC(模型-视图-控制器)架构对示例应用进行了转化重构,以演示如何正确地组织应用代码结构。有了可扩展性强的应用结构之后,接下来的章节使用Flask扩展为应用提供了额外的功能,包括用户登录和注册、NoSQL查询、RESTAPI、一套后台管理界面,以及其他特性。然后,你会学到如何使用单元测试,保障代码持续按照正确的方式工作,避免极具风险的猜测式编程。本书还会讨论可用于部署Flask应用的诸多不同平台,以及你必须考虑的——每个平台的优劣利弊。你会从本书中学到:■搭建Python项目环境的优秀实践■使用SQLAlchmy,以编程式对数据库进行查询■在Jinja中开发页面模板■在Flask中搭建MVC环境■探索NoSQL,何时应该以及何时不应该使用,以及如何使用■开发你自己的Flask扩展■使用Clry创建异步任务■使用py.tst编写单元测试

内容提要

Flask是在Python用户中最为流行的Wb开发框架。《深入理解Flask》从一个简单的Flask项目入手,由浅入深地探讨了一系列实战问题,包括如何使用SQLAlchmy和Jinja等工具进行Wb开发;如何正确地设计扩展性强的Flask应用架构和搭建MVC环境;对于各种NoSQL数据库的特性,何时应该、何时不应该及如何使用它们;通过使用Flask扩展快速实现用户的身份系统、RESTfulAPI、NoSQL查询、后台管理等功能;如何创建自己的扩展;使用Clry编写异步任务,使用pytst进行单元测试等;最后介绍了如何部署上线,包括使用自己搭建的服务器或使用各种云服务,以及如何权衡和选择这些不同的解决方案。

目录

第1章入门1使用Git进行版本控制1安装Git1Git基础2使用pip管理Python包4在Windows上安装pip4在MacOSX和Linux上安装Python包管理器pip5pip基本操作6用virtualnv的沙盒管理依赖7virtualnv基础7开始我们的项目8使用FlaskScript9总结10第2章使用SQLAlchmy创建数据模型11设置SQLAlchmy11Python安装包12FlaskSQLAlchmy12我们的第1个数据模型13创建usr表15CRUD16新增数据16读取数据16修改数据19删除数据19数据模型之间的关联20一对多20多对多23SQLAlchmy会话对象的方便之处25使用Almbic进行数据库迁移26总结28第3章通过模板创建视图29Jinja的语法29过滤器30注释34if语句34循环35宏36Flask特有的变量和函数37创建视图38视图函数38编写和继承模板41FlaskWTForms45WTForms基础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使用FlaskLogin87用户角色90总结95第7章在Flask中使用NoSQL数据库96NoSQL数据库的种类96键值数据库97文档数据库97列式数据库98基于图的数据库关系型数据库与NoSQL的比较关系型数据库的优势NoSQL数据库的优势在什么情况下用什么数据库在Flask中使用MongoDB安装MongoDB配置MongoEngin定义文档CRUDNoSQL中的关联关系利用NoSQL的强大能力总结第8章构建RESTfulAPIREST是什么构建RESTfulFlaskAPIGET请求格式化输出请求中的参数POST请求身份认证PUT请求DELETE请求总结第9章使用Clry编写异步任务Clry是什么配置Clry和RabbitMQ在Clry中创建任务运行Clry任务Clry工作流监控Clry在Flowr中通过网页进行监控创建一个提醒应用生成每周摘要总结第10章有用的Flask扩展FlaskScriptFlaskDbugToolbarFlaskCach缓存函数和视图缓存带参数的函数缓存带有查询参数的路径使用Rdis作为缓存后端使用mmcachd作为缓存后端FlaskAsstsFlaskAdmin编写基础管理页面编写数据库管理页面增强文章管理功能编写文件系统管理页面保护FlaskAdmin的安全FlaskMail总结第11章构建你自己的扩展编写一个YouTubFlask扩展创建Python包通过Flask扩展修改响应数据总结第12章测试Flask应用什么是单元测试怎样进行测试对应用进行单元测试测试路由函数用户界面测试测试覆盖率测试驱动的开发总结第13章部署Flask应用部署在你自己的服务器上使用fabric把代码推送到服务器使用suprvisor运行你的Wb服务器GvntTornadoNginx和uWSGIApach和uWSGI部署在Hroku上使用HrokuPostgrs在Hroku中使用Clry在AWS上部署应用在AmazonElasticBanstalk上使用Flask使用AmazonRlationalDatabasSrvic在AmazonSimplQuuSrvic中使用Clry总结

精彩节摘

译者序

最近才知道,Flask在一开始竟然是作为愚人节玩笑诞生的,不过后来大受好评,并成为正式项目。我在最初接触Flask的时候,它也只是作为颇具先锋气质的“单文件微框架”而在Python世界被人们口口相传。但在很短的时间内,它在PythonWb开发者中开始流行起来,Flask社区迅速壮大,为它开发的插件数量也呈爆发式增长。如今,Flask在事实上已经成为轻量级PythonWb框架的代言人。不论是对于Python初学者,还是对于有若干年经验的Python老手,使用Flask搭建新项目都是非常有吸引力的选择。

不过即使再优秀的工具,仍然很容易被用错。作者在书中也反复强调了这一点。Flask提供的是一个最小化的Wb框架,在此基础上你可以方便地使用你最喜欢的方式,添加你最得心应手的工具,形成一个专属于你和你的项目的高度定制化的强大工具套装。它不会逼你自己造轮子,因为在社区里几乎应有尽有;它也不会逼你用它附赠的轮子,因为它根本就没有准备赠品。对老司机来说,这样的框架可以最大程度地解放战斗力;对初学者来说,又可以利用社区中大量现成的资源很快上手。这样大家便都开心了,毕竟写程序最重要的就是开心。

但问题可能也隐藏在这里面:老手可能会根据自己以往熟悉的方式,把强大的战斗力释放在一些本来或许没有必要重复造轮子的地方;而新手则可能犯更多的错误:比如使用最原始的方式或者来自其他框架的方式搭建程序结构,结果当应用规模膨胀时面临困境;又或者引入了过多没必要引入的Flask扩展,导致代码难以测试和维护,稳定性降低,甚至出现冲突。另一个潜在的问题是,庞大的社区带来的好处毋庸多言,但如果大量地使用非官方库,则意味着需要承担社区开发者的水平参差不齐所带来的风险。有个程序员朋友吐槽说好多Flask扩展有个共同点,就是文档写得比代码棒。总的来说,如何正确地运用框架给予的高度自由,结合具体项目的需求,在用不用扩展和使用什么扩展之间做出最合理的选择,则是需要一定的经验的。而对于ORM、NoSQL、云服务等,同样存在用不用、用哪个、如何用的选择难题。

在我看来,在面向业务的开发中,深入二字的含义并不是指黑科技和奇技淫巧,而是具有预见性的解决方案选择。基于对当下项目需求的准确认知,采用最适合当前情况的不多不少的架构设计,在避免提前优化的同时对未来做好充分准备,对测试部署等流程的意义的深刻理解,才是深入和进阶,也正是本书的重点所在。实际上本书超纲的地方有点多,探讨的问题已经远不止Flask了。

这是我翻译的第1本书。翻译这件事果然是比较特别的体验,跟写作和编程都很不一样。翻译一整本书对于像我这样的拖延症患者来说,是个极大的挑战,因为即使每次翻译一大段,进度条也几乎没有移动的意思;但如果拖下去,它就绝对不会结束。拖到最后时刻然后突击解决的常规办法已经不奏效了,无论如何,经过漫长的修炼,终于还是完成了。感谢张春雨编辑邀请我翻译本书,感谢Cooki对我不务正业的理解和支持,感谢公孙欠扁等朋友帮我解决一些英文问题。

水平所限,翻译中必定存在问题,请读者见谅。我在豆瓣、Twittr、微博等处的ID都是su27,读后若有困惑或批评意见,欢迎找我讨论、吐槽。

祝每位读者都能从本书中获益。珍爱生命,我用Python!

苏丹6年6月

作者简介

JackStouffr是一名有数年Wb应用开发经验的程序员。他在两年前将自己所有的项目都切换到了Flask,目前在位于密歇根州奥本山的ApolloAmrica工作,使用Python、Flask和JavaScript编写企业内部的业务工具。Jack是开源技术的信徒与支持者,他在GitHub上发布以他所推荐的最佳实践原则编写的Flask范例时,该范例立即成为线上最受欢迎的Flask代码库。Jack还曾经担任由PacktPublishing出版的FlaskFramworkCookbook一书的审稿人。

译者

苏丹,来自山城重庆,毕业于北京师范大学;现豆瓣资深开发工程师,主要开发作品有豆瓣FM等;有多年Python编程实践经验;曾参与《LarningAndroid中文版》一书翻译。JackStouffr是一位有数年wb应用开发经验的程序员。他在两年前将他所有的项目都切换到了Flask。他目前在位于密歇根州奥本山的ApolloAmrica工作,使用Python、Flask和JavaScript编写企业内部业务工具。Jack是开源技术的信徒与支持者,在GitHub上发布以他所推荐的zui佳实践原则编写的Flask范例时,立即成为了线上受欢迎的Flask代码库。Jack还曾经担任PacktPublishing的《FlaskFramworkCookbook》一书的审稿人。

前言

Flask是一个基于Python的Wb框架,它的设计目的是提供Wb开发所需要的最小功能子集。Flask与别的框架(尤其是采用其他编程语言的框架)的不同之处在于:它没有绑定诸如数据库查询或者表单处理等功能库,以及它们所组成的整个生态系统。它倾向于对这些功能的实现方式不做任何限定。

这种系统带来的主要好处是:开发者能够使用他们想用的任何方式和工具,去设计他们的应用架构。另外,对于一些常见的通用功能,Flask没有以某种特定方式去实现,这意味着在Flask中,对标准库的使用会比在其他框架里多得多,这保证了通用功能的稳定性及针对其他Python程序员的可读性。由于Flask社区十分庞大,所以该社区提供的添加通用功能的方式非常多。本书的重点之一,就是介绍扩展Flask的方法,了解它们如何帮助我们避免重复造轮子。这些扩展的妙处在于,如果不需要那些额外的功能,就不用引入它们,这样我们的应用才会保持简洁、轻量。

这种系统的主要弊端是,大部分新的Flask用户不知道如何正确地规划大型应用的结构,最后弄出一大堆让人难以理解和维护的代码。所以本书的另一个重点是如何为Flask应用创建模型/视图/控制器(MVC)架构。

MVC体系在最初被发明时,主要用来设计桌面应用的用户界面。它将数据处理(modl)、交互逻辑(controllr)和用户界面(viw)隔离成三层不同的组件。

这三层组件的隔离,使得程序员不用为每个网页重新实现一遍相同的功能,而是只要重用那些代码。比如,若是没有把处理数据的代码拆分到单独的函数中,那么我们不得不在每个页面的渲染函数里,把同样的数据库连接代码和SQL查询代码都写一遍。

本书中大量的调查研究资料及Wb应用开发中各种踩坑的第1手痛苦经验,使得本书成为目前关于Flask的最详尽、实用的资料。真诚地希望你会喜欢它。本书涵盖的内容

第1章,入门,帮助读者应用Python项目的最佳实践方式,并搭建一个Flask开发环境。读者会得到一个十分基础的Flask应用框架,在整本书中都会用到。第2章,使用SQLAlchmy创建数据模型,介绍如何把Python的数据库工具SQLAlchmy与Flask结合起来使用,为用户的数据库建立一套面向对象的编程接口。第3章,通过模板创建视图,讲解如何使用Flask的模板系统Jinja,在SQLAlchmy模型的支持下动态地创建HTML页面。第4章,使用蓝图创建控制器,介绍如何使用Flask的蓝图(bluprint)功能来组织视图,同时避免代码冗余。第5章,进阶的应用结构,结合在以上4章中学到的知识,详细讲解应该如何组织代码,以创建可维护性和可测试性都更好的应用结构。第6章,保护应用安全,讲解如何使用各种Flask扩展,为每个视图添加基于权限的登录系统。第7章,在Flask中使用NoSQL数据库,讲解什么是NoSQL数据库,以及在应用需要更强大的功能时,应该怎样将NoSQL数据库与之整合。第8章,构建RESTfulAPI,介绍如何通过一种安全和易用的方式,把应用数据库中的数据提供给第三方使用。第9章,使用Clry创建异步任务,讲解如何把成本高或耗时长的任务挪到后台执行,让它们不拖慢应用。第10章,有用的Flask扩展,讲解如何利用一些广受欢迎的扩展,让应用跑得更快、增加更多的功能,以及让调试变得方便、易行。第11章,构建你自己的扩展,了解Flask扩展是如何工作的,以及怎样编写扩展。第12章,测试Flask应用,讲解如何通过在应用中增加单元测试和用户界面测试,以保障程序质量,减少错误代码的数量。第13章,部署Flask应用,介绍如何把已经完成的应用从开发环境中拿出来,部署到线上服务器中。

预览时标签不可点收录于话题#个上一篇下一篇


转载请注明:http://www.guyukameng.com/html/html1/12567.html