通過選取用于創(chuàng)建輕量級應(yīng)用組件的形式來理解進行Django解耦設(shè)計的方法。通過本書的學(xué)習(xí),你將具備創(chuàng)建單頁面響應(yīng)實時交互應(yīng)用的能力。如果你熟練掌握了Python和JavaScript,則可以開始編寫應(yīng)用程序了。
■ 學(xué)習(xí)開始新建Django項目的輕量級方法。
■ 將可重用應(yīng)用分解成與其他應(yīng)用通信的更細小的服務(wù)。
■ 創(chuàng)建靜態(tài)、便捷的原型站點作為網(wǎng)站和應(yīng)用的支撐平臺。
■ 使用Django Rest Framework構(gòu)建REST API。
■ 學(xué)習(xí)如何使用帶有Backbone.js的MVC框架的Django。
■ 在REST API平臺上創(chuàng)建單頁面網(wǎng)絡(luò)應(yīng)用。
■ 將WebSockets和Tornado網(wǎng)絡(luò)庫與實時特性相融合。
■ 在項目開發(fā)中使用本書的代碼驅(qū)動實例。
自Django 創(chuàng)建以來,各種各樣的開源社區(qū)已經(jīng)構(gòu)建了很多Web 框架,比如JavaScript 社區(qū)創(chuàng)建的Angular.js 、Ember.js 和Backbone.js 之類面向前端的Web 框架,它們是現(xiàn)代Web 開發(fā)中的先驅(qū)。Django 從哪里入手來適應(yīng)這些框架呢?我們?nèi)绾螌⒖蛻舳薓VC 框架整合成為當前的Django 基礎(chǔ)架構(gòu)?
本書講述如何利用Django 強大的“自支持”功能體系。本書的目標是引導(dǎo)讀者跨越認為Django 太繁重而無法進行快速應(yīng)用開發(fā)的誤區(qū)。從創(chuàng)建世界上最小的Django 應(yīng)用到構(gòu)建RESTful API ,本書將引導(dǎo)讀者學(xué)習(xí)如何利用這種流行的Python Web 框架。
寫這本書的目的
我們編寫本書主要是出于對Django 的熱愛。我們的社區(qū)是令人驚奇的,它有很多資源可以用來學(xué)習(xí)Django 和開發(fā)應(yīng)用。盡管我們也喜歡包括官方的Django 文檔在內(nèi)的一些資源,但這僅僅是對Django 強大功能的過于關(guān)注,而非它的解耦設(shè)計。Django 是一個令人滿意的框架,它帶有很多用于構(gòu)建Web 應(yīng)用的通用程序。在本書中,我們要突出說明如何將這些組件進行分離和間接替換,并從中選出最適合創(chuàng)建應(yīng)用的一些組件來。同樣地,我們想要將Django 項目和應(yīng)用的典型框架進行分解。我們的目標是使讀者不再提出“我怎樣用Django 完成我的X 工作”這樣的問題,而是提出“Django 能幫我完成X 工作嗎?如果不能,社區(qū)有可用的工具嗎”這樣的問題。
另外,我們想要回答的問題是利用大量客戶端實時交互,以及與本地可移動應(yīng)用匹配的組件構(gòu)建更多應(yīng)用時,將Django 放在網(wǎng)絡(luò)的什么地方適用。作為框架,用戶對Django 一無所知,這使得一些喜歡Django 的用戶無法得到構(gòu)建這種應(yīng)用的指導(dǎo)。我們希望本書能夠幫助解決這些問題,想看到Django 及其社區(qū)日益壯大,并在多年后大家也成為它的一員。
本書讀者對象
如果你喜歡閱讀本書,你很可能是Django 的中級用戶。在學(xué)習(xí)完Django 的注冊教程以及編寫了一些基本Django 應(yīng)用后,很想知道下一步該如何做。本書接下來會幫助你基本掌握如何利用Django 的有效性和簡單性。
或者,你可能正在進行一個Django 項目,很想知道如何將Backbone.js 整合到你的項目中。本書將引導(dǎo)你進行一些有關(guān)整合的最好練習(xí),并為構(gòu)建內(nèi)容豐富的Web 應(yīng)用提供一個起點。
哪些人不適合閱讀本書?
盡管本書適用許多不同背景的開發(fā)者,但并不能面面俱到。對于那些不具備編寫Python 和JavaScript 程序能力的人來說,這本書可能很不適合。書中所有的概念和實例都是圍繞這些語言編寫的,并在每個章節(jié)中大量使用。對于那些初次接觸Django 的新手,也不適合。
關(guān)于本書示例
書中的每個項目示例都是在快速應(yīng)用開發(fā)的主旨下精心制作的。在每一章,都將學(xué)到在項目管理、工具和團隊合作支持下創(chuàng)建項目的方法。我們想要讀者創(chuàng)建用于自己的項目,并能夠根據(jù)自己的需要進行定制。一般而言,本書提供的實例代碼,都可以在你的程序和文檔中進行使用,無需得到我們的許可,除非是更新代碼的重要內(nèi)容。例如,使用本書中的幾個代碼塊編寫程序是不需要得到允許的。銷售或分發(fā)O’Reilly 書中的實例光盤就需要得到許可。引用本書或本書中的實例代碼解答問題不需要得到允許。將本書中的大量實例代碼集成到自己產(chǎn)品的文檔中需要得到許可。
我們很贊賞對本書的引用,但不要求。通常引用包括標題、作者、出版商和ISBN 。例如:“《Lightweight Django》Julia Elman and Mark Lavin (O’Reilly),Copyright 2015 Julia Elman and Mark Lavin,978-1-491-94594-0 ”。
如果發(fā)現(xiàn)所使用的代碼示例超出了上面的許可范圍,可以隨時通過郵件與我們聯(lián)系:
permissions@oreilly.com 。
本書結(jié)構(gòu)
第1 章,世界上最小的Django 項目。創(chuàng)建輕便簡單的網(wǎng)絡(luò)應(yīng)用是本書的核心思想。在這一章,要創(chuàng)建一個可運行的單行文件“Hello World ”的Django 應(yīng)用。
第2 章,無狀態(tài)的Web 應(yīng)用。講述占位符圖像服務(wù)的創(chuàng)建方法。第2 章將引導(dǎo)讀者通過創(chuàng)建無狀態(tài)網(wǎng)絡(luò)應(yīng)用來生成占位符圖像的URL 。
第3 章,創(chuàng)建靜態(tài)站點生成器?焖贅(gòu)建原型是一門有用的創(chuàng)建和輔助網(wǎng)絡(luò)應(yīng)用的技術(shù)。我們要通過創(chuàng)建靜態(tài)網(wǎng)站生成器協(xié)助維護團隊項目的方式來檢驗該技術(shù)的效果。
第4 章,構(gòu)建REST API 。REST API 是創(chuàng)建豐富的、具有內(nèi)容相關(guān)性的網(wǎng)絡(luò)應(yīng)用的重要部分。在這一章我們利用Django 靜態(tài)框架開始構(gòu)建一個大比例的Scrum 板應(yīng)用。
第5 章,使用Backbone.js 的客戶端Django 。本章繼續(xù)講述在第4 章中用新構(gòu)建的RESTful API 創(chuàng)建的Backbone.js 應(yīng)用。介紹創(chuàng)建新Backbone 應(yīng)用的每個組件以及如何用Django 同步該客戶端框架。
第6 章,單頁面Web 應(yīng)用。單頁面網(wǎng)絡(luò)應(yīng)用是一種能夠創(chuàng)建豐富客戶端網(wǎng)絡(luò)應(yīng)用的途徑。在本章,我們將回到簡單的Backbone 應(yīng)用中,不斷使這個單頁面應(yīng)用更加健壯。
第7 章,實時Django 。這一章講述創(chuàng)建響應(yīng)實時交互的網(wǎng)絡(luò)應(yīng)用,為用戶提供及時滿意的服務(wù)。為了繼續(xù)完成先前兩章的項目,我們要將一個實時組件添加到使用網(wǎng)絡(luò)插件和Tornado 的Scrum 板上,這是一個用Python 編寫的異步網(wǎng)絡(luò)庫。
第8 章,Django 和Tornado 通信。將強大的Django 與Tornado 的健壯特性相結(jié)合是創(chuàng)建可變、實時的Django 應(yīng)用的重要標志。在本章中,我們將通過集成Django 的通信能力擴展Tornado 服務(wù)器的功能,來建立一種既安全又可交互的聯(lián)系。
致謝
有許多人需要感謝,沒有他們的努力這本書是不可能完成的。本書的編輯Meghan 給了我們很大的支持。
感謝技術(shù)評論員Aymeric Augustin 、Jon Banafato 、Barbara Shaurette 和Marie Selvanadin 給我們的評價,無論是表揚還是批評,對我們盡力完成這本書都給予了幫助。也要感謝Heather Scherer 對本書給予的技術(shù)指導(dǎo)。
對所有開源的開發(fā)人員和提供者表示感謝,他們無窮無盡的努力為本書提供了使用和寫作所需的各種工具。
感謝早期版本的讀者,他們給了我們完成工作的機會,使我們能夠解決敲字和格式缺陷等問題,并提供了反饋,從而使錯誤得到糾正。
Julia
我非常感謝我極其可愛的家庭和親密的朋友,他們對我寫作本書給予了一貫的支持。感謝我的丈夫Andrew ,對我能力的信任和在漫長與崎嶇的寫作過程中的一貫鼓舞和堅定的支持。感謝我的母親Katherine ,她使我超越了自己的能力。感謝我的繼父Tom ,他教我如何使用無線電鉆為我的汽車更換機油,為我灌輸了艱苦工作的價值。感謝我的哥哥Alex 和姐姐Elizabeth ,他們一直作為旁觀者為我鼓勁。感謝我最好的朋友Jenny ,她給了我永恒的愛和終生的友誼。
還要對我的極好的合作者Mark 的卓越才能和友誼表示感謝。他是我曾經(jīng)合作過的最有才能的開發(fā)者之一。我們并肩完成了這本書,我不能想象與其他人合作撰寫這本書會是怎樣一個過程。
我還要非常感謝Python 社區(qū)和在我的事業(yè)上給我靈感、鼓勵和指導(dǎo)的特殊成員: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,一名前端的開發(fā)者和技術(shù)教育的倡導(dǎo)者,2008年在World Online工作期間就開始了Django的學(xué)習(xí)。她是Girl Develop It RDU和PyLadies RDU組織的共同創(chuàng)辦人,該組織幫助超過850名婦女學(xué)習(xí)了編程知識。
Mark Lavin,是北加利福尼亞達勒姆Caktus咨詢集團的技術(shù)主管。他是在華爾街進行衍生品定價工作數(shù)年后開始進行Python網(wǎng)絡(luò)開發(fā)的。他負責對與Django開發(fā)相關(guān)的幾個開源項目進行維護。