《Django企业开发实战》试读:前言

自 2011 年,我从 Java Web 开发转行到 Python Web 开发,到今天已经有 7 年多了。一开始,我就是从 SSH(Structs+Spring+Hibernate)框架转到 Django 的。当时的第一感觉是这玩意儿太轻便了,比 SSH 好用太多了。但熟悉了 Python 社区之后,我发现 Django 已然算是 Python 社区中一个比较重的框架了。说它重的主要原因在于它的定位是企业级开发框架,或者说全功能的 Web开发框架,也因为它“通过更少的代码,更快速地开发 Web 应用”的口号。 在使用 Django 的几年中,我和同事们做了 N 多个系统,有对内的,比如 CAS 权限管理后台、新闻系统后台、电影内容系统后台、游戏内容管理后台、投票系统后台和运营相关系统等;也有对外的,比如游戏中心 H5 Web 版、用户留言系统、H5 活动页系统和交易相关系统等。 我们开发过的所有系统,无论是从开发速度还是上线后新功能的迭代,Django 都能很好地满足需求。所以我就在考虑,能不能总结出来一些对大家有帮助的东西,主要面向想学习 Django但又无从下手,或者看了很久文档,虽能完成新手教程,但想自己开发一套系统时却无从下手的人。这就是我写这本书的第一个原因。 第二个原因是,我从 Java 转到 Python 之后,是通过 The Django Book 一书的在线翻译版学习Django 的。对于快速学习来说,中文版无疑是最好的选择。当时 Django 的版本是 1.3,而那本书使用的版本是 1.1。虽说当时 Django 1.1 没有太大的版本差异,但是时至今日,Django 的最新版本已经是 2.0 了,整体结构以及功能都有了很大的变化,我发现依然有人在看那本书入门。因此,应该有新的教程出现,帮助初学者快速入门。 第三个原因是,我在 2012 年很幸运地通过了面试,从小公司跳槽到搜狐,但入职第一年的工作内容让我意识到在上家公司一年左右使用 Django 的经历并没有给我增加太多实战经验。我在 2012 年的年终总结里写道: 主要是因为之前的工作都是开发阶段的,用的也都是 Django 的皮毛,对部署和环境配置等都没有概念。 所以我希望为那些刚开始学习 Django 的人提供比较完整的内容,并且这些内容是从实际工作中总结出来的。 基于上述三个原因,也就有了这本书和之前录过的一套视频(https://st.h5.xiaoe-tech.com/st/ 57fHzIRWE)。希望我的经验对你有所帮助,使你不至于在使用了 Django 一年后还处于我当时的状态。 谁应该来读这本书 本书面向所有对 Python Web 开发感兴趣的人,无论你是刚开始学习编程的学生,还是刚入职场的程序员,抑或是有多年编程经验、打算转换自己技能栈的老程序员。 本书的目标读者概括如下: □ 学完 Python 基础、想要继续学习 Web 开发的人; □想要使用 Django 快速开发日常业务系统(商业 Web 项目、自动化运维系统等)的人; □有其他语言 Web 开发经验、想要转到 Python Web 开发的人。 哪些公司或产品在使用 Django 基于 Django 开发的比较有名的产品在 https://www.djangoproject.com/start/overview/ 上可以看到,其中有很多我们耳熟能详的产品,比如 Instagram、Disqus、Pinterest、Mozilla、Sentry 和 Open Stack 等。 国内使用 Django 的公司或产品有搜狐、奇虎 360、豆瓣、今日头条、妙手医生、闪银奇异、蚂蚁金服等。 生态 Django 之所以被广泛应用,除了本身提供了完备的功能之外,也得益于它的成熟生态。这一框架本身没有覆盖到的功能,一般都会有优秀的第三方插件来补足,比如用来做 RESTful 接口的django-rest-framework、用来调试性能的 django-debug-toolbar 和用来搜索的 django-haystack 等。更多的第三方插件,可以在 https://djangopackages.org/上查看。 学习曲线 相对于 Flask、web.py 和 Bottle 这一类微型框架来说,Django 上手确实有点复杂,但也并不难,因为官网的新手指导写得很清晰。在众多框架中,Django 的文档算是相当优秀和完整的了。 你需要花费更多的时间来学习 Django,这是因为它提供的内容远多于其他框架。刚开始,可能会觉得很多地方不明白,但是等你熟悉了之后就会发现,在 Web 应用开发上,Django 已经提供了很完备的支持,比如登录认证、权限管理、admin 管理后台、缓存系统、常见的 Web 安全防御等。Django 每一层或者模块所提供的功能都很清晰,比如什么样的需求在哪一层来处理,或者在哪个模块中处理。 Django 一开始的学习曲线有点陡,然后是平缓上升的。先陡主要是因为新手需要一下子接受很多东西,但是随着后面不断使用和了解,你会发现,学习所耗费的时间完全值得。你可以更快地做出完善的系统,这会是一笔很划算的投资。 本书目的 本书的初衷前面也提到了,就是把我知道的关于软件开发的知识、实际项目开发中总结到的经验,以一个 Blog 系统为例写出来,让后来者可以参考我的经验快速成长,同时也可以搭建出自己的试验场。 本书内容 本书共分为四部分,分别为:初入江湖、正式开发、第三方插件的使用、上线前的准备及线上问题排查。 每一部分着重介绍一个大的主题:第一部分介绍正式进入编码之前的一些工作;第二部分在第一部分的基础上开始实现需求,进行编码,直到完成需求;第三部分重点介绍我们常用的第三方插件,如 xadmin、django-autocomplete-light 和 django-rest-framework 等;最后一部分介绍调试、优化、自动化部署以及压力测试等内容。 每一部分中的每一章专注介绍一个比较小的主题,像第 5 章主要介绍模型中涉及的内容,比如各种字段的介绍、QuerySet的使用和优化以及 ORM的概念等。 每一章的内容完成后,代码都可以正常运行,这样你可以快速看到运行结果。此外,每一章也都是基于前一章的结果来进行开发的。 本书对应的源码①放在 https://github.com/the5fire/typeidea,其中每一个分支对应每一章最后的源码。比如,第 5 章的源码是 book/05-initproject 分支下的代码,其他的以此类推。 即使 GitHub 上提供了源码,本书还是呈现出了完整的代码,建议读者根据内容进行编写,同时也要注意书中提到的一些需要自己独立完成的作业。 为什么选择一个 Blog 系统 选择写一个 Blog 系统,是因为绝大部分人对这个系统/业务都很熟悉。实际上,在工作中我们经常需要开发一些从来没接触过的业务,所以把业务落地(从开发到部署上线)比起曾经开发过什么系统更为重要。 这里选择一个大家都熟悉的业务,是为了降低大家理解业务的难度。用一句话来说的话,那就是:降低学习 Django 时的心智负担。 ① 本书源码也可从图灵社区(iTuring.cn)本书主页免费注册下载。 “理解”这个词很重要。无论是设计语言、设计框架、设计项目结构,还是设计产品流程,都需要重视这个词。此外,也需要注意降低用户(团队)的心智负担。关于“心智负担”这个词,这里不再做过多解释,只强调一点:对于正式项目开发来说,降低开发人员维护代码时的心智负担,就是减少复杂度、降低风险的方式。 另外一个原因前面也提到过,每个开发者都需要有自己的“试验场”,这个观点我在书中也会多次提到。技术的世界变化非常快,比方说今天我在公司项目的技术选型上使用了 Django 1.11,那意味着在后续的维护过程中不太可能会升级到 Django 2.0 或者更高的版本。因为在成本上不允许这么做,但你会因此就放弃对新技术的追求和实践吗?当然不会,我们可以通过其他方式来获得新技术的实践经验,进而在某个时刻把这些经验引入到商业项目中来。 所以,即便现在有各种博客平台和公众号平台供你写下自己的技术总结、思考,你可能也需要一个能够随时实践新技术的“试验场”,来让你获得工作之外的经验点。 致谢 感谢我的父母,没有他们,也就没有我。 感谢搜狐,我在这个平台上学会了很多,收获了很多。 感谢一起共事过的同事们,跟你们一起编码、讨论的经历,催生了这本书。 感谢 Adrian Holovaty 和 Simon Willison 创造了这个优秀的框架。 感谢尹吉峰、董伟明、李者璈(Manjusaka)对本书的审校、建议和短评,让我能进一步完善本书内容。 特别感谢大妈(Zoom.Quiet)和清风老师给本书写推荐序,感谢他们给我提的各种建议(关于图书编写、编程规范、编码细节等非常实用的建议)。也非常感激大妈 2012 年组织的 BPUG,会上清风老师和其他众位前辈的分享对当时刚转入 Python 开发的我来说影响重大。 最后,感谢我的爱人和女儿。没有我爱人的支持以及对我和女儿的细心照料,我就不会有时间来完成工作之外的其他兴趣(如写书、写博客、录视频等)。感谢我的女儿给我带来不一样的世界,她每一天的成长都是肉眼可见的。对我而言,她的学习能力是我需要借鉴的,这不断督促我去学习更多新东西。她的成长是对时间很好的展现,这让我对时间有了更直观和深刻的认识。 勘误和反馈 鉴于我的经历和视野有限,书中错误之处在所难免,敬请读者指正。欢迎到 GitHub 上给我提问题,网址是 https://github.com/the5fire/django-practice-book,或者发邮件到我的邮箱 thefivefire@ gmail.com(注明:《Django 企业开发实战》勘误),这里先行谢过。 如果你对本书的内容或者组织方式有任何疑问,也欢迎到我的博客(https://www.the5fire.com)上或者通过微信公众号(Python 程序员杂谈)给我留言。

>Django企业开发实战

Django企业开发实战
作者: 胡阳
副标题: 高效Python Web框架指南
isbn: 7115506892
书名: Django企业开发实战
页数: 392
定价: 99.00元
出版社: 人民邮电出版社
出版年: 2019-2
装帧: 平装