Python Web开发的百科全书,了解Web工程从开发到上线的完整流程
对实际Web项目中大量实战经验的总结,有用、实用
《Python Web开发实战》按照一个Web 产品从无到有、从简单变复杂、从基础到进阶的过程,多角度、全方位讲述了Python Web 开发。内容涉及Web 框架、测试、数据库、消息队列、服务化、持续集成等,把网站工程的全貌展现在读者的眼前,从其中可以了解Web 工程从开发到上线的完整流程。另外,作者对当前现在正在流行的技术或工具,如Flask、Celery、Jupyter、Supervisor、
SaltStack、Pandas 等都有较为详细的阐述,可作为技术选型时的参考。
对于Web 开发者、使用Python 语言的运维工程师和运维开发工程师、想提高Python 技能的开发者、想了解Python Web 开发的其他开发者,《Python Web开发实战》都适合阅读。
推荐序一
作为一名使用Python 作为主力开发语言十多年的老码农,常常被人要求推荐Python 相关的图书。经常推荐的都是一些讲解Python 语言本身的图书,而专注在Python 的常见应用领域—— Web 开发上的好书,却一直是凤毛麟角。也曾有出版社的朋友约我写一本,但我畏惧写书的艰辛,一直不敢答应。得知伟明的《Python Web 开发实战》一书即将出版,欣慰异常,心想伟明写这个专题实在是再合适不过,必为佳作。读完书稿,果不其然。
由于Python 具有开发快速、适合多人协作、库丰富、社区成熟等优点,因此是一门非常适合用于Web 开发的语言。国外的Youtube、Quora ,国内的豆瓣、知乎等,均是以Python 为主要语言开发的。说起Python 的Web 开发,很多人会理解成只要学会某个Web 框架,能写代码查查数据库,写模板渲染出HTML ,最多再学一下配个Web Server 把服务启动起来就行,没什么内容。多数Python 书里“Web 开发”的章节一般也就是讲这些。但其实要完成生产可用的,能够应对一定规模访问量的Web 系统,Web 开发工程师要学会的远远不止这些。环境搭建、API 设计、网站架构、系统管理、持续集成、服务化、数据处理、并发处理等,这些都是必要的,而且需要付出大量的努力才能掌握的知识。
伟明一直对技术抱有极强的兴趣,也有着优秀的动手能力。我对他的第一印象是从他发给豆瓣的求职信开始的:“目前我给glances、Salt、tmux-powerline、supervisor、mongo-pythondriver、circus、graphite-web、Diamond、autopep8、graph-explorer、pip、Celery 等开源项目贡献过代码,给Python 标准库logging 贡献过代码。”能够参与到这么多一线开源软件中的应聘者,确实少见。入职豆瓣后,伟明也表现出了对Web 开发的深刻理解,很快成为豆瓣多个Web 产品的主力,并几乎凭一人之力完成了CODE 项目的私有依赖剥离和开源。
伟明把他个人多年Web 开发的经验,以及豆瓣十年来数百名优秀工程师在Web 开发上最佳实践的积累,凝聚在了《Python Web 开发实战》这本书里,多维度、全面地介绍了PythonWeb 开发涉及的各种技术。更难能可贵的是,他还在这本书里留下了非常多关于这些技术的思索:为什么要使用某个技术?某个需求都有哪些技术可以满足?如何取舍?这种不仅要知其然,还要知其所以然的态度,是工程师快速成长必备的。
这样的一本书能够出版,对于国内的Python 开发者绝对是个福音。我向所有有兴趣使用Python 做Web 开发的开发者们,强烈推荐此书。
洪强宁
爱因互动CTO
前豆瓣首席架构师
前宜信大数据创新中心首席架构师
推荐序二
这篇序酝酿了好几天,今天终于动笔写下了第一个字。说实话,很久没有看到关于Python的好书了,尤其是国人自己的原创书。Web 开发本身就是一件很庞杂的事情,模板渲染、API 的开发、后端的部署,能在一本书中把这些问题都说清楚并不容易。作者伟明与我都出身豆瓣,虽然没有同时期在豆瓣工作过,但豆瓣的CODE 系统把我们俩联系到了一起。他是CODE 的三代目,通过CODE 里一行行Python 代码,仿佛知道了彼此的心意。感谢伟明把豆瓣的一些工程实践进行了整理和总结,这是本书最宝贵的一点。而本书的精华在于他对各种技术使用场景的探讨:那些库谁都会用,但在什么场景使用,在生产环境中这个库的表现到底如何,则不见得有认真的思考。期望将来还可以看到越来越多这样的图书,祝此书大卖。
清风
SAY CEO
前豆瓣技术总监
推荐序三
一次真诚的倾诉
自从CPyUG 列表订阅人数超过10,000 以后,我就认为中文的Python 学习资料足够多了,而最正确的自学姿势应该从官方文档开始。但是,《Python Web 开发实战》一书又改变了我这一偏见。
有道是:“出版是最好的记忆”,伟明亲身证实了这一点。作为一名普通的程序员,只从一个念头出发,独自写出了500 多页的技术图书,这实在是一件令人敬佩的事。凡是写过书,特别是写过技术图书的人都知道——写书,难的不是写什么,如何写,而是要耐得住寂寞!在中国生活原本就如此艰辛,无论上学还是工作,周围永远有无数同侪在竞争;而写书几乎是负收入的经济行为,特别是技术图书。当然,图书印刷出来,奉上对家人的感谢,是一种别样的程序员式的浪漫情怀,这种成就感不足为外人道矣。
伟明打动我,让我为他写推荐序,就在于他说自己写书的那个简单的初衷:让公司所有人都知道Web 开发究竟是什么样的,从而能更好地协同。这其实已经是佛陀流传经文普度众生的大情怀了!
Python 是如此活跃的一种语言,几乎伴随互联网的发生而创立,又伴随互联网的极速发展而繁荣,在Web 开发领域拥有全栈式的技术生态;又因为脚本语言以及其自身语言的人性化设计,通过Web 勾联到了几乎所有计算机应用领域,这也导致在特定问题上,Python 总是有一堆解决方案可以选择,而不像其他语言,只有一种方案。但是选择过多,其实也导致了学习成本的增加。
伟明将自身在Web 领域所有方面的经验提炼后整理成书,本质上是将几十个关联产品的官方文档,结合具体工程经验进行了梳理,给出了领域问题最佳方案的关键思考点和自己的答案,而更加可贵的是,给出了这些思考点的来源,以及形成过程,即给出了解决各种Web领域问题的思维模式。
从前后几个版本的书稿也可以看出,如果没有这本图书的艰苦整理,伟明自己也难以形成这种宏观+ 微观能同时作用的思考模式。所以,我一直认为:“输出是更加残酷的输入。”要将纷繁零散的经验,变成他人可以习得的技能,要组织成叙述合理、案例得当、结构清晰的图书,这个过程本身就得对自己的所有积累进行反复的再学习、解析和增补。其中的工作量远远不止这几百页书的内容。
更加奇妙的是,在没有这部书稿前,其实我们并不熟悉,只是在社区列表中见过邮箱名而已。但是,有了独有的知识成果后,伟明就有了立场,也有了动机和理由,邀请我以及类似洪教授/Limodou 这些中国Python 学习者的前辈来评点和审核书稿,获得直接的联系,即人脉。
所以,我在郑重推荐此书的内容之外,更加倡议大家向伟明学习——敢于写书,通过真诚的技术图书总结自己的过去,获得更好的未来,帮助更多的Pythonista。
Zoom.Quiet(大妈)
优视眼动科技CTO
Python 中文社区创始人之一及管理员
OBP 及蟒营工程设计者兼主持人
推荐序四
说起来给《Python Web 开发实战》一书写序还真是很突然。2016 年5 月30 日,我突然被拉到了一个微信群里,正觉得纳闷的时候,看到群里Zoom.Quiet 的介绍,才知道是怎么回事。原来《Python Web 开发实战》已经基本成书,让大家看一看。对于本书的作者董伟明,我们没有在线下交流过,但是对Python 的热爱时不时地会把大家通过某种方式吸引到一起。
这是一本原创图书,从书名来看是和Web 相关的,而Web 领域正好和我的兴趣以及平时的工作相关。作为一个开源Web 框架的开发者,自然对Web 开发的内容比较感兴趣,借由此书正好可以了解一下别人是如何理解以及如何实践Web 开发的,更何况作者还是豆瓣的工程师,因此对书的内容还是有一些期待。
经过一番阅读之后,我与伟明交流了一些看法,他给予了详细的解释与说明,我对他的写作思路也有了一些了解。对Web 开发的理解其实可以有很多角度,比如,从开发者的角度,这就会更多从具体的功能实现、框架使用来看待;从运维者的角度,会更多地从部署、维护、平台的角度来理解;从测试及质量的角度,会关心代码的测试性及代码审查;从框架开发者的角度,就要了解Web 开发涉及哪些领域,每一领域应该用什么技术与工具来组织,不同领域又如何通过某些框架来有机地结合在一起。仅凭一本书,想完全满足所有人的需求是非常困难的。
阅读本书,我最大的感受就是:全和新。
全指的是内容覆盖面较广。原本我以为作者会主要讲Flask 框架的开发,但其实Flask 框架在本书中的比重并不大,反而是与Web 相关的开发技术的介绍占了大部分的篇幅,甚至也包含了部署以及Python 本身的一些特性和工具。对此我也有疑问,并向作者咨询。Web 开发的概念其实太大了,不同的角度可以有不同的理解。比如我们常说的Web 框架,其实绝大部分都只涉及展示相关的开发,所以应该更精确地称之为Web 展示框架或Web 应用框架。但是它很有可能依赖底层的批处理、大数据处理等技术,这些虽然不能算纯粹的Web技术,但是却可以放在Web 开发这一概念下。因此如果把每一块与Web 开发相关的内容都写出来,那么本书的厚度就可想而知了。所以作者是从个人实践的角度出发,把他所理解的与Web 开发相关的技术尽可能全地,并且尽可能用更多的实例来讲述。之所以我会有“全”这个感受,因为书的内容涉及了Web 框架、Ajax 的前后端交互、测试、数据库、数据分析、服务化、部署、系统管理、常用工具等内容,有点百科全书的意味。
为什么说“新”,因为书中讲的许多东西都是现在正在流行的技术或工具,像Flask、Celery、Jupyter、Supervisor、SaltStack、Pandas 等。其中有些我还是第一次接触,说明作者平时接触的内容的确非常丰富,同时也结合了豆瓣的一些具体的实例,这样会更有借鉴意义。
全书的难度不是很大,内容广泛全面,不过因为篇幅所限,对于前端的技术介绍得不多,有些章节可能描述也不是太细。不过前端技术虽然也算是Web 开发技术,但是与Python 的关系就不那么紧密了,本书毕竟是一本Python 相关的书,所以涉及不多也是正常的。而且许多具体的技术本身内容都很丰富,也绝不是短篇幅可以说清楚的,所以反而有个基础性的介绍,在需要时自行学习可能更好。因此本书比较适合对于Web 开发有一定了解,但是希望了解更多Python Web 开发技术的读者。
非常感谢作者把自己的经验分享给大家。
李迎辉
Python 开源资深行者
Python-CN 邮件列表创建人
UliPad 和Uliweb 作者
伟明把他个人多年 Web 开发的经验,以及豆瓣十年来数百名优秀工程师在 Web 开发上实践的积累,凝聚在了这本书里,多维度、全面地介绍了 Python Web 开发涉及的各种技术。我向所有有兴趣使用 Python 做 Web 开发的开发者们,强烈推荐此书。
——洪强宁,爱因互动CTO,前豆瓣首席架构师,前宜信大数据创新中心首席架构师
Web开发本身就是一件很庞杂的事情,模版渲染、API的开发、后端的部署,能在一本书中把这些问题都说清楚并不容易。感谢伟明把豆瓣的一些工程实践进行了整理和总结,这是本书宝贵的一点。
——清风,SAY CEO,前豆瓣技术总监
伟明将自身在 Web 领域所有方面的经验提炼后整理成书,本质上是将几十个关联产品的官方文档,结合具体工程经验进行了梳理,给出了领域问题解决方案的关键思考点和自己的答案,而更加可贵的是,给出了这些思考点的来源,以及形成过程,即给出了解决各种 Web 领域问题的思维模式。
——Zoom.Quiet(大妈),优视眼动科技 CTO,Python 中文社区创始人之一和管理员
阅读本书,我深切感受到了:全和新。本书的内容涉及了Web框架、Ajax的前后端交互、测试、数据库、数据分析、服务化、部署、系统管理、常用工具等内容,有点百科全书的意味。另外,书中讲的许多东西都是现在正在流行的技术或工具,像Flask、Celery、Jupyter、Supervisor、SaltStack、Pandas等。
——李迎辉,Python开源资深行者,Python-CN邮件列表创建人,UliPad和Uliweb作者
本书由Python开发开始,循序渐进,把网站工程的全貌展现在读者的眼前,是了解Web工程从开发到上线完整流程的优秀参考书籍。
——邢犇(CNBorn), 前豆瓣东西技术负责人
对于很多刚进入Python世界的人,伟明的这本书提供了一个非常好的“知识地图”,涉及了Python Web开发的方方面面。
——胡阳(the5fire),手机搜狐网,任资深开发工程师
这本书从开发环境的搭建、Web 框架的使用,到最后的持续集成和 Python 的进阶用法,无一不是他多年的实际工程经验总结,十分宝贵。
——姚钢强(acmerfight),知乎工程师
这本书非常全面地介绍了使用 Python 进行 Web 开发的方方面面,既有 Web 框架、缓存、消息队列、并发处理的场景介绍和技术选型,又有开发流程、质量保证的丰富实战经验。
——蔡斌(VeryCB),DeepDevelop工程师,前豆瓣条目组技术负责人
整本书都是作者对实际Web项目中大量实战经验的总结,绝非纸上谈兵。相信通过阅读该书可以帮助开发者规避掉大量项目中的“坑”,构建出更高性能、更稳定的Web项目。
——Spawnris, 腾讯工程师