温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
Python
Web开发实战
Web
开发
实战
内 容 简 介本书按照一个 Web 产品从无到有、从简单变复杂、从基础到进阶的过程,多角度、全方位讲述了 Python Web 开发。内容涉及 Web 框架、测试、数据库、消息队列、服务化、持续集成等,把网站工程的全貌展现在读者的眼前,从其中可以了解 Web 工程从开发到上线的完整流程。另外,作者对当前现在正在流行的技术或工具,如 Flask、Celery、Jupyter、Supervisor、SaltStack、Pandas 等都有较为详细的阐述,可作为技术选型时的参考。对于 Web 开发者、使用 Python 语言的运维工程师和运维开发工程师、想提高 Python 技能的开发者、想了解 Python Web 开发的其他开发者,本书都适合阅读。未经许可,不得以任何方式复制或抄袭本书之部分或全部内容。版权所有,侵权必究。图书在版编目(CIP)数据Python Web 开发实战/董伟明著.北京:电子工业出版社,2016.9ISBN 978-7-121-29733-5I.1PII.1董III.1程序开发工具程序设计 IV.1TP311.561中国版本图书馆 CIP 数据核字(2016)第 200131 号责任编辑:许艳印刷:装订:出版发行:电子工业出版社北京市海淀区万寿路 173 信箱邮编:100036开本:787980 1/16 印张:31.5 字数:616.9 千字版次:2016 年 9 月第 1 版印次:2016 年 9 月第 1 次印刷定价:105.00 元凡所购买电子工业出版社图书有缺损问题,请向购买书店调换。若书店售缺,请与本社发行部联系,联系及邮购电话:(010)88254888,88258888。质量投诉请发邮件至 ,盗版侵权举报请发邮件至 。本书咨询联系方式:(010)51260888-。推荐序一作为一名使用 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-python-driver、circus、graphite-web、Diamond、autopep8、graph-explorer、pip、Celery 等开源项目贡献过代码,给 Python 标准库 logging 贡献过代码。”能够参与到这么多一线开源软件中的应聘者,确实少见。入职豆瓣后,伟明也表现出了对 Web 开发的深刻理解,很快成为豆瓣多个 Web 产品的主力,并几乎凭一人之力完成了 CODE 项目的私有依赖剥离和开源。伟明把他个人多年 Web 开发的经验,以及豆瓣十年来数百名优秀工程师在 Web 开发上最佳实践的积累,凝聚在了Python Web 开发实战这本书里,多维度、全面地介绍了 PythonWeb 开发涉及的各种技术。更难能可贵的是,他还在这本书里留下了非常多关于这些技术iv推荐序一的思索:为什么要使用某个技术?某个需求都有哪些技术可以满足?如何取舍?这种不仅要知其然,还要知其所以然的态度,是工程师快速成长必备的。这样的一本书能够出版,对于国内的 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 领域所有方面的经验提炼后整理成书,本质上是将几十个关联产品的官方文档,结合具体工程经验进行了梳理,给出了领域问题最佳方案的关键思考点和自己的推荐序三vii答案,而更加可贵的是,给出了这些思考点的来源,以及形成过程,即给出了解决各种 Web领域问题的思维模式。从前后几个版本的书稿也可以看出,如果没有这本图书的艰苦整理,伟明自己也难以形成这种宏观+微观能同时作用的思考模式。所以,我一直认为:“输出是更加残酷的输入。”要将纷繁零散的经验,变成他人可以习得的技能,要组织成叙述合理、案例得当、结构清晰的图书,这个过程本身就得对自己的所有积累进行反复的再学习、解析和增补。其中的工作量远远不止这几百页书的内容。更加奇妙的是,在没有这部书稿前,其实我们并不熟悉,只是在社区列表中见过邮箱名而已。但是,有了独有的知识成果后,伟明就有了立场,也有了动机和理由,邀请我以及类似洪教授/Limodou 这些中国 Python 学习者的前辈来评点和审核书稿,获得直接的联系,即人脉。所以,我在郑重推荐此书的内容之外,更加倡议大家向伟明学习敢于写书,通过真诚的技术图书总结自己的过去,获得更好的未来,帮助更多的 Pythonista。Zoom.Quiet(大妈)优视眼动科技 CTOPython 中文社区创始人之一及管理员OBP 及蟒营工程设计者兼主持人Zoom.Quiet(大妈)从 2002 年开始接触 Python,积极推广 Pythonic,筹办了自 2012 年起连续四届 PyCon中国大会,编撰有可爱的 Python等图书。作为大家熟知的社区“大妈”,主持了OSTC 2015“程序媛专场”,坐实了这一称号,得到广大程序员认可。推荐序四说起来给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 应用框推荐序四ix架。但是它很有可能依赖底层的批处理、大数据处理等技术,这些虽然不能算纯粹的 Web技术,但是却可以放在 Web 开发这一概念下。因此如果把每一块与 Web 开发相关的内容都写出来,那么本书的厚度就可想而知了。所以作者是从个人实践的角度出发,把他所理解的与 Web 开发相关的技术尽可能全地,并且尽可能用更多的实例来讲述。之所以我会有“全”这个感受,因为书的内容涉及了 Web 框架、Ajax 的前后端交互、测试、数据库、数据分析、服务化、部署、系统管理、常用工具等内容,有点百科全书的意味。为什么说“新”,因为书中讲的许多东西都是现在正在流行的技术或工具,像 Flask、Celery、Jupyter、Supervisor、SaltStack、Pandas 等。其中有些我还是第一次接触,说明作者平时接触的内容的确非常丰富,同时也结合了豆瓣的一些具体的实例,这样会更有借鉴意义。全书的难度不是很大,内容广泛全面,不过因为篇幅所限,对于前端的技术介绍得不多,有些章节可能描述也不是太细。不过前端技术虽然也算是 Web 开发技术,但是与 Python 的关系就不那么紧密了,本书毕竟是一本 Python 相关的书,所以