通过选取用于创建轻量级应用组件的形式来理解进行Django解耦设计的方法。通过本书的学习,你将具备创建单页面响应实时交互应用的能力。如果你熟练掌握了Python和JavaScript,则可以开始编写应用程序了。
■ 学习开始新建Django项目的轻量级方法。
■ 将可重用应用分解成与其他应用通信的更细小的服务。
■ 创建静态、便捷的原型站点作为网站和应用的支撑平台。
■ 使用Django Rest Framework构建REST API。
■ 学习如何使用带有Backbone.js的MVC框架的Django。
■ 在REST API平台上创建单页面网络应用。
■ 将WebSockets和Tornado网络库与实时特性相融合。
■ 在项目开发中使用本书的代码驱动实例。
自Django 创建以来,各种各样的开源社区已经构建了很多Web 框架,比如JavaScript 社区创建的Angular.js 、Ember.js 和Backbone.js 之类面向前端的Web 框架,它们是现代Web 开发中的先驱。Django 从哪里入手来适应这些框架呢?我们如何将客户端MVC 框架整合成为当前的Django 基础架构?
本书讲述如何利用Django 强大的“自支持”功能体系。本书的目标是引导读者跨越认为Django 太繁重而无法进行快速应用开发的误区。从创建世界上最小的Django 应用到构建RESTful API ,本书将引导读者学习如何利用这种流行的Python Web 框架。
写这本书的目的
我们编写本书主要是出于对Django 的热爱。我们的社区是令人惊奇的,它有很多资源可以用来学习Django 和开发应用。尽管我们也喜欢包括官方的Django 文档在内的一些资源,但这仅仅是对Django 强大功能的过于关注,而非它的解耦设计。Django 是一个令人满意的框架,它带有很多用于构建Web 应用的通用程序。在本书中,我们要突出说明如何将这些组件进行分离和间接替换,并从中选出最适合创建应用的一些组件来。同样地,我们想要将Django 项目和应用的典型框架进行分解。我们的目标是使读者不再提出“我怎样用Django 完成我的X 工作”这样的问题,而是提出“Django 能帮我完成X 工作吗?如果不能,社区有可用的工具吗”这样的问题。
另外,我们想要回答的问题是利用大量客户端实时交互,以及与本地可移动应用匹配的组件构建更多应用时,将Django 放在网络的什么地方适用。作为框架,用户对Django 一无所知,这使得一些喜欢Django 的用户无法得到构建这种应用的指导。我们希望本书能够帮助解决这些问题,想看到Django 及其社区日益壮大,并在多年后大家也成为它的一员。
本书读者对象
如果你喜欢阅读本书,你很可能是Django 的中级用户。在学习完Django 的注册教程以及编写了一些基本Django 应用后,很想知道下一步该如何做。本书接下来会帮助你基本掌握如何利用Django 的有效性和简单性。
或者,你可能正在进行一个Django 项目,很想知道如何将Backbone.js 整合到你的项目中。本书将引导你进行一些有关整合的最好练习,并为构建内容丰富的Web 应用提供一个起点。
哪些人不适合阅读本书?
尽管本书适用许多不同背景的开发者,但并不能面面俱到。对于那些不具备编写Python 和JavaScript 程序能力的人来说,这本书可能很不适合。书中所有的概念和实例都是围绕这些语言编写的,并在每个章节中大量使用。对于那些初次接触Django 的新手,也不适合。
关于本书示例
书中的每个项目示例都是在快速应用开发的主旨下精心制作的。在每一章,都将学到在项目管理、工具和团队合作支持下创建项目的方法。我们想要读者创建用于自己的项目,并能够根据自己的需要进行定制。一般而言,本书提供的实例代码,都可以在你的程序和文档中进行使用,无需得到我们的许可,除非是更新代码的重要内容。例如,使用本书中的几个代码块编写程序是不需要得到允许的。销售或分发O’Reilly 书中的实例光盘就需要得到许可。引用本书或本书中的实例代码解答问题不需要得到允许。将本书中的大量实例代码集成到自己产品的文档中需要得到许可。
我们很赞赏对本书的引用,但不要求。通常引用包括标题、作者、出版商和ISBN 。例如:“《Lightweight Django》Julia Elman and Mark Lavin (O’Reilly),Copyright 2015 Julia Elman and Mark Lavin,978-1-491-94594-0 ”。
如果发现所使用的代码示例超出了上面的许可范围,可以随时通过邮件与我们联系:
permissions@oreilly.com 。
本书结构
第1 章,世界上最小的Django 项目。创建轻便简单的网络应用是本书的核心思想。在这一章,要创建一个可运行的单行文件“Hello World ”的Django 应用。
第2 章,无状态的Web 应用。讲述占位符图像服务的创建方法。第2 章将引导读者通过创建无状态网络应用来生成占位符图像的URL 。
第3 章,创建静态站点生成器。快速构建原型是一门有用的创建和辅助网络应用的技术。我们要通过创建静态网站生成器协助维护团队项目的方式来检验该技术的效果。
第4 章,构建REST API 。REST API 是创建丰富的、具有内容相关性的网络应用的重要部分。在这一章我们利用Django 静态框架开始构建一个大比例的Scrum 板应用。
第5 章,使用Backbone.js 的客户端Django 。本章继续讲述在第4 章中用新构建的RESTful API 创建的Backbone.js 应用。介绍创建新Backbone 应用的每个组件以及如何用Django 同步该客户端框架。
第6 章,单页面Web 应用。单页面网络应用是一种能够创建丰富客户端网络应用的途径。在本章,我们将回到简单的Backbone 应用中,不断使这个单页面应用更加健壮。
第7 章,实时Django 。这一章讲述创建响应实时交互的网络应用,为用户提供及时满意的服务。为了继续完成先前两章的项目,我们要将一个实时组件添加到使用网络插件和Tornado 的Scrum 板上,这是一个用Python 编写的异步网络库。
第8 章,Django 和Tornado 通信。将强大的Django 与Tornado 的健壮特性相结合是创建可变、实时的Django 应用的重要标志。在本章中,我们将通过集成Django 的通信能力扩展Tornado 服务器的功能,来建立一种既安全又可交互的联系。
致谢
有许多人需要感谢,没有他们的努力这本书是不可能完成的。本书的编辑Meghan 给了我们很大的支持。
感谢技术评论员Aymeric Augustin 、Jon Banafato 、Barbara Shaurette 和Marie Selvanadin 给我们的评价,无论是表扬还是批评,对我们尽力完成这本书都给予了帮助。也要感谢Heather Scherer 对本书给予的技术指导。
对所有开源的开发人员和提供者表示感谢,他们无穷无尽的努力为本书提供了使用和写作所需的各种工具。
感谢早期版本的读者,他们给了我们完成工作的机会,使我们能够解决敲字和格式缺陷等问题,并提供了反馈,从而使错误得到纠正。
Julia
我非常感谢我极其可爱的家庭和亲密的朋友,他们对我写作本书给予了一贯的支持。感谢我的丈夫Andrew ,对我能力的信任和在漫长与崎岖的写作过程中的一贯鼓舞和坚定的支持。感谢我的母亲Katherine ,她使我超越了自己的能力。感谢我的继父Tom ,他教我如何使用无线电钻为我的汽车更换机油,为我灌输了艰苦工作的价值。感谢我的哥哥Alex 和姐姐Elizabeth ,他们一直作为旁观者为我鼓劲。感谢我最好的朋友Jenny ,她给了我永恒的爱和终生的友谊。
还要对我的极好的合作者Mark 的卓越才能和友谊表示感谢。他是我曾经合作过的最有才能的开发者之一。我们并肩完成了这本书,我不能想象与其他人合作撰写这本书会是怎样一个过程。
我还要非常感谢Python 社区和在我的事业上给我灵感、鼓励和指导的特殊成员:James Bennett 、Sean Bleier 、Nathan Borror 、Colin Copeland 、Matt Croydon 、Katie Cunningham 、Selena Deckelmann 、Jacob Kaplan-Moss 、Jessica McKellar 、Jesse Noller 、Christian Metts 、Lynn Root 、Caleb Smith 、Paul Smith 、Karen Tracey 、Malcolm Tredinnick 、Ben Turner 和Simon Willison 。
Julia Elman,一名前端的开发者和技术教育的倡导者,2008年在World Online工作期间就开始了Django的学习。她是Girl Develop It RDU和PyLadies RDU组织的共同创办人,该组织帮助超过850名妇女学习了编程知识。
Mark Lavin,是北加利福尼亚达勒姆Caktus咨询集团的技术主管。他是在华尔街进行衍生品定价工作数年后开始进行Python网络开发的。他负责对与Django开发相关的几个开源项目进行维护。