Django開(kāi)發(fā)從入門(mén)到實(shí)踐
定 價(jià):79 元
- 作者:段藝 涂偉忠
- 出版時(shí)間:2019/11/1
- ISBN:9787111640608
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP311.561
- 頁(yè)碼:
- 紙張:膠版紙
- 版次:
- 開(kāi)本:16開(kāi)
Django是一款高性能的Python Web開(kāi)發(fā)框架,本書(shū)全面講解Django開(kāi)發(fā)相關(guān)的內(nèi)容。本書(shū)共分為24章,主要內(nèi)容包括Python Web開(kāi)發(fā)的基礎(chǔ)知識(shí)、Django項(xiàng)目實(shí)戰(zhàn)、使用Django開(kāi)發(fā)API、Django系統(tǒng)運(yùn)維等部分,其中基礎(chǔ)知識(shí)部分講解Python基礎(chǔ)知識(shí)、各種常用的數(shù)據(jù)結(jié)構(gòu)、正則表達(dá)式、HTTP協(xié)議、字符串編碼等;實(shí)戰(zhàn)開(kāi)發(fā)部分講解兩個(gè)具體的項(xiàng)目,從功能需求設(shè)計(jì)、模塊劃分,再到*終的編碼實(shí)現(xiàn),手把手教你如何從零打造一個(gè)自己的項(xiàng)目;Django系統(tǒng)運(yùn)維部分講解如何線上部署一個(gè)系統(tǒng)、需要掌握的基礎(chǔ)知識(shí)、使用的每個(gè)組件的作用,讓讀者明白其中的原理,出現(xiàn)問(wèn)題之后如何排查。
Python簡(jiǎn)單易學(xué)、上手快速,成為很多程序員喜愛(ài)的編程語(yǔ)言。使用Python進(jìn)行Web應(yīng)用開(kāi)發(fā),無(wú)疑能夠加快需求實(shí)現(xiàn)的速度,快速迭代和驗(yàn)證產(chǎn)品的原型。有些人可能會(huì)有疑問(wèn):Python性能不夠好,用來(lái)開(kāi)發(fā)Web是不是不太合適?Python在性能上確實(shí)無(wú)法和C、Java等語(yǔ)言相比,但在大部分情況下使用Python開(kāi)發(fā)是可以滿足性能需求的,并且很多時(shí)候程序性能不夠好,這不是語(yǔ)言本身的問(wèn)題,而是架構(gòu)設(shè)計(jì)、緩存設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)算法的選用以及開(kāi)發(fā)人員編程水平等引起的問(wèn)題。總之,使用Python語(yǔ)言進(jìn)行Web開(kāi)發(fā)有獨(dú)特的優(yōu)勢(shì),通常能滿足大部分應(yīng)用場(chǎng)景的需求。
本書(shū)面向想學(xué)習(xí)Python Web開(kāi)發(fā)的讀者,分5篇講解基礎(chǔ)知識(shí)和實(shí)戰(zhàn)。
第1篇是基礎(chǔ)知識(shí),讓讀者對(duì)Python語(yǔ)言中各種常用的數(shù)據(jù)結(jié)構(gòu)及其算法有一定的了解,同時(shí)介紹常見(jiàn)數(shù)據(jù)結(jié)構(gòu)算法的時(shí)間復(fù)雜度,讓讀者從學(xué)習(xí)之初就有性能的意識(shí),為將來(lái)編寫(xiě)出高質(zhì)量的優(yōu)秀代碼打下基礎(chǔ)。本篇還對(duì)開(kāi)發(fā)過(guò)程中會(huì)用到的相關(guān)知識(shí)點(diǎn)(比如正則表達(dá)式、HTTP協(xié)議、字符串編碼等)進(jìn)行講解,讓讀者對(duì)Python Web開(kāi)發(fā)有一個(gè)全面的認(rèn)識(shí)。特別是對(duì)容易讓初學(xué)者困惑的知識(shí),比如絕對(duì)路徑和相對(duì)路徑的區(qū)別、字符編碼相關(guān)的內(nèi)容,也進(jìn)行了講解。
第2篇和第3篇是實(shí)戰(zhàn)部分,主要講解“資源管理”和“個(gè)人博客系統(tǒng)”兩個(gè)項(xiàng)目。從功能需求設(shè)計(jì)、模塊劃分,再到最終的編碼實(shí)現(xiàn),手把手教讀者如何從零開(kāi)始打造自己的項(xiàng)目。
第4篇是使用Django開(kāi)發(fā)API,通過(guò)一個(gè)完整的教程,以逐步深入的方式,讓讀者享受使用Django Rest Framework進(jìn)行API開(kāi)發(fā)的樂(lè)趣。
第5篇是Django系統(tǒng)運(yùn)維,讓讀者不僅能將服務(wù)部署好,而且還能明白各個(gè)組件的原理以及它們是如何在一起工作的,從而提高讀者分析問(wèn)題和解決問(wèn)題的能力。最后講解Django的一些常用功能,比如中間件、信號(hào)系統(tǒng)、緩存框架等,在講解過(guò)程中會(huì)深入講解它們的工作原理,以及使用中會(huì)遇到的一些“坑”。
本書(shū)的讀者
如果對(duì)Python有一定的了解,想學(xué)習(xí)Python Web開(kāi)發(fā),本書(shū)會(huì)是一個(gè)不錯(cuò)的選擇。
誰(shuí)不適合讀本書(shū)
不太適合一點(diǎn)Python基礎(chǔ)都沒(méi)有的人員。另外,如果你已經(jīng)是Python Web開(kāi)發(fā)方面的專家,那么這本書(shū)對(duì)你來(lái)說(shuō)價(jià)值應(yīng)該也不大。
勘誤與反饋
本書(shū)所有章節(jié)中的源代碼放在https://github.com/djangobook-cn/book-code上,歡迎讀者從GitHub下載并提出問(wèn)題(issue),如果下載有問(wèn)題,可以通過(guò)郵箱booksaga@126.com與編者聯(lián)系。
致謝
在編寫(xiě)本書(shū)時(shí),筆者得到了各個(gè)方面非常多的建議、幫助和鼓勵(lì),在此深表感謝。
首先,特別感謝武漢大學(xué)的譚建揚(yáng)同學(xué)認(rèn)真細(xì)心地測(cè)試了書(shū)中的示例,指出了很多問(wèn)題。
感謝研究生實(shí)驗(yàn)室中三位計(jì)算機(jī)專業(yè)的同學(xué)江超、張浩然和楊驍,這三位不僅僅是研究生期間的“戰(zhàn)友”,也在我們編寫(xiě)本書(shū)期間給出了不少建議。
感謝趙軍出色的核對(duì)工作,提出了非常多的改進(jìn)意見(jiàn)。
最后,占用了大量周末時(shí)間來(lái)寫(xiě)作,這和妻子lotus的大力支持是分不開(kāi)的。
涂偉忠
序(一)
序(二)
前言
第1篇 基礎(chǔ)知識(shí)
第1章 Django簡(jiǎn)介3
1.1 Django基本介紹3
1.2 Django發(fā)布情況4
1.3 Django的MVT架構(gòu)簡(jiǎn)介5
1.3.1 MVC模式5
1.3.2 Django MVT模式5
1.4 Django和主流Web框架對(duì)比6
1.5 開(kāi)發(fā)環(huán)境選擇6
1.5.1 Windows平臺(tái)7
1.5.2 Mac平臺(tái)7
1.5.3 Linux平臺(tái)8
第2章 掌握必要的基礎(chǔ)知識(shí) 9
2.1 Web開(kāi)發(fā)需要什么基礎(chǔ)知識(shí)9
2.2 Python語(yǔ)言入門(mén)10
2.2.1 Python語(yǔ)言簡(jiǎn)介11
2.2.2 執(zhí)行Python代碼的方式11
2.2.3 Python中的縮進(jìn)格式12
2.2.4 常見(jiàn)的運(yùn)算符13
2.2.5 數(shù)據(jù)類型14
2.2.6 字符串14
2.2.7 列表15
2.2.8 元組19
2.2.9 字典19
2.2.10 集合21
2.2.11 數(shù)據(jù)類型的轉(zhuǎn)換22
2.2.12 常見(jiàn)數(shù)據(jù)結(jié)構(gòu)操作的時(shí)間復(fù)雜度23
2.2.13 選擇語(yǔ)句與循環(huán)語(yǔ)句26
2.2.14 關(guān)于模塊27
2.2.15 Python中的函數(shù)28
2.2.16 Python中的類30
2.2.17 命令行參數(shù)32
2.2.18 引用和復(fù)制一個(gè)對(duì)象32
2.2.19 常用內(nèi)置函數(shù)33
2.2.20 常用模塊的功能35
2.3 正則表達(dá)式37
2.3.1 正則表達(dá)式中的元字符37
2.3.2 正則模塊的核心函數(shù)39
2.3.3 理解貪婪與非貪婪41
2.3.4 正則表達(dá)式中的Flag42
2.4 HTTP協(xié)議的基礎(chǔ)知識(shí)43
2.5 絕對(duì)路徑與相對(duì)路徑47
2.6 Python中的字符串編碼48
第3章 Django初步體驗(yàn)51
3.1 Django的請(qǐng)求和響應(yīng)51
3.2 Django的模型和admin站點(diǎn)52
3.2.1 新建blog應(yīng)用53
3.2.2 修改項(xiàng)目設(shè)置53
3.2.3 編寫(xiě)模型代碼54
3.2.4 體驗(yàn)admin站點(diǎn)55
3.2.5 對(duì)admin站點(diǎn)進(jìn)行簡(jiǎn)單定制58
3.3 初識(shí) Django QuerySet62
3.3.1 基本查詢63
3.3.2 添加記錄64
3.3.3 修改記錄65
3.3.4 刪除記錄65
3.4 Django的視圖和函數(shù)65
第2篇 實(shí)踐學(xué)習(xí)一:從一個(gè)簡(jiǎn)單的資源管理做起
第4章 需求的確定和項(xiàng)目排期規(guī)劃75
4.1 產(chǎn)品定位75
4.2 功能需求的確定76
4.3 產(chǎn)品設(shè)計(jì)的確定77
4.4 產(chǎn)品實(shí)現(xiàn)的排期77
第5章 數(shù)據(jù)模型的設(shè)計(jì)與實(shí)現(xiàn)79
5.1 模型簡(jiǎn)介79
5.2 模型的數(shù)據(jù)字段79
5.2.1 數(shù)值類字段80
5.2.2 字符類字段80
5.2.3 布爾類字段81
5.2.4 日期時(shí)間類字段81
5.2.5 文件類字段82
5.2.6 IP地址類字段82
5.2.7 二進(jìn)制類字段83
5.3 模型關(guān)系字段83
5.3.1 外鍵字段83
5.3.2 多對(duì)多字段83
5.3.3 一對(duì)一字段84
5.4 字段參數(shù)84
5.5 圖書(shū)管理系統(tǒng)模型的實(shí)現(xiàn)85
5.6 數(shù)據(jù)庫(kù)查詢接口簡(jiǎn)介88
5.6.1 創(chuàng)建對(duì)象89
5.6.2 修改對(duì)象89
5.6.3 查找對(duì)象90
5.6.4 刪除對(duì)象91
第6章 網(wǎng)站的入口——URL設(shè)計(jì)92
6.1 URL設(shè)計(jì)簡(jiǎn)介92
6.2 URL反轉(zhuǎn)簡(jiǎn)介94
第7章 頁(yè)面和功能的實(shí)現(xiàn)96
7.1 基本頁(yè)面的實(shí)現(xiàn)96
7.2 Django模板語(yǔ)言簡(jiǎn)介101
7.3 Django用戶認(rèn)證和鑒權(quán)簡(jiǎn)介106
7.4 用戶系統(tǒng)的實(shí)現(xiàn)109
7.4.1 用戶注冊(cè)功能的實(shí)現(xiàn)109
7.4.2 用戶登錄功能的實(shí)現(xiàn)115
7.4.3 用戶注銷功能的實(shí)現(xiàn)117
7.4.4 修改密碼功能的實(shí)現(xiàn)118
7.5 圖書(shū)管理相關(guān)功能的實(shí)現(xiàn)124
7.5.1 圖書(shū)添加功能的實(shí)現(xiàn)124
7.5.2 圖片上傳功能的實(shí)現(xiàn)128
7.5.3 圖書(shū)列表功能的實(shí)現(xiàn)131
7.5.4 圖書(shū)詳情功能的實(shí)現(xiàn)136
第3篇 實(shí)踐學(xué)習(xí)二:從博客做起
第8章 個(gè)人博客網(wǎng)站的規(guī)劃和設(shè)計(jì)141
8.1 功能需求的設(shè)計(jì)141
8.2 模塊劃分143
第9章 Django通用視圖簡(jiǎn)介144
9.1 TemplateView簡(jiǎn)介144
9.2 RedirectView簡(jiǎn)介145
9.3 DetailView簡(jiǎn)介145
9.4 ListView簡(jiǎn)介146
9.5 FormView簡(jiǎn)介147
9.6 CreateView簡(jiǎn)介147
9.7 UpdateView簡(jiǎn)介147
9.8 DeleteView簡(jiǎn)介148
第10章 基本頁(yè)面框架的實(shí)現(xiàn)149
10.1 前端頁(yè)面框架的實(shí)現(xiàn)149
10.2 后端頁(yè)面框架的實(shí)現(xiàn)154
第11章 用戶系統(tǒng)和認(rèn)證模塊的實(shí)現(xiàn)158
11.1 同步數(shù)據(jù)庫(kù)文件158
11.2 用戶登錄功能的實(shí)現(xiàn)158
11.3 用戶注銷功能的實(shí)現(xiàn)164
第12章 導(dǎo)航欄組件的實(shí)現(xiàn)165
12.1 導(dǎo)航欄數(shù)據(jù)模型的設(shè)計(jì)165
12.2 導(dǎo)航欄前端組件的實(shí)現(xiàn)166
12.3 導(dǎo)航欄管理頁(yè)面的制作168
第13章 友情鏈接組件的實(shí)現(xiàn)180
13.1 友情鏈接數(shù)據(jù)模型的設(shè)計(jì)180
13.2 友情鏈接前端組件的實(shí)現(xiàn)181
13.3 友情鏈接管理頁(yè)面的實(shí)現(xiàn)182
第14章 “碎碎念”組件的實(shí)現(xiàn)191
14.1 “碎碎念”數(shù)據(jù)模型的設(shè)計(jì)191
14.2 “碎碎念”前端組件的實(shí)現(xiàn)192
14.3 “碎碎念”組件管理頁(yè)面的實(shí)現(xiàn)193
14.4 “碎碎念”前端TimeLine頁(yè)面的實(shí)現(xiàn)205
第15章 文章組件的實(shí)現(xiàn)209
15.1 文章數(shù)據(jù)模型的設(shè)計(jì)209
15.2 文章分類前端組件的實(shí)現(xiàn)210
15.3 文章分類管理的頁(yè)面212
15.4 文章管理頁(yè)面218
15.5 文章前端組件的實(shí)現(xiàn)234
第4篇 使用Django開(kāi)發(fā)API
第16章 序列化241
16.1 搭建一個(gè)新的開(kāi)發(fā)環(huán)境241
16.2 開(kāi)始編寫(xiě)Web API241
16.3 創(chuàng)建模型242
16.4 創(chuàng)建一個(gè)序列化類243
16.5 了解Serializers的工作方式244
16.6 使用ModelSerializers246
16.7 使用序列化器編寫(xiě)常規(guī)的視圖247
16.8 測(cè)試Web API249
第17章 請(qǐng)求和響應(yīng)251
17.1 Request對(duì)象251
17.2 Response對(duì)象251
17.3 響應(yīng)狀態(tài)碼251
17.4 包裝 API 視圖252
17.5 使用新組件編寫(xiě)視圖252
17.6 給URLs添加可選格式化后綴254
17.7 它看起來(lái)怎么樣255
17.8 API可瀏覽性257
第18章 基于類的視圖258
18.1 使用類視圖重寫(xiě)API258
18.2 使用Mixins混入類260
18.3 使用通用類視圖261
第19章 認(rèn)證和權(quán)限263
19.1 模型類添加一些信息263
19.2 添加用戶相關(guān)的API264
19.3 將Snippets和用戶關(guān)聯(lián)265
19.4 給API添加只讀用戶字段266
19.5 給視圖添加必要的權(quán)限267
19.6 給可瀏覽API添加登錄功能267
19.7 實(shí)現(xiàn)級(jí)別的權(quán)限268
19.8 通過(guò)API實(shí)現(xiàn)認(rèn)證269
19.9 認(rèn)證和權(quán)限總結(jié)270
第20章 關(guān)系和超鏈接API271
20.1 為API創(chuàng)建根視圖271
20.2 添加高亮顯示功能的視圖271
20.3 鏈接API272
20.4 確保URL都命名274
20.5 添加分頁(yè)功能275
20.6 頁(yè)面上瀏覽API275
第21章 ViewSets和Routers276
21.1 使用ViewSets進(jìn)行重構(gòu)276
21.2 顯式將URL和ViewSets綁定起來(lái)278
21.3 使用 Routers 自動(dòng)化URL配置279
21.4 使用視圖、視圖集的利弊279
第5篇 Django系統(tǒng)運(yùn)維
第22章 部署基礎(chǔ)知識(shí)283
22.1 部署基礎(chǔ)知識(shí)儲(chǔ)備283
22.2 Linux進(jìn)程分析284
22.3 Linux端口分析287
第23章 部署上線290
23.1 Django部署前的準(zhǔn)備290
23.1.1 運(yùn)行開(kāi)發(fā)服務(wù)器進(jìn)行測(cè)試290
23.1.2 安裝Nginx290
23.2 使用uWSGI部署292
23.2.1 安裝uWSGI軟件292
23.2.2 使用 uWSGI運(yùn)行項(xiàng)目292
23.3 使用supervisor管理進(jìn)程293
23.3.1 安裝supervisor軟件包293
23.3.2 supervisor配置293
23.3.3 supervisor使用簡(jiǎn)介294
23.4 配置Nginx295
第24章 其他常見(jiàn)功能297
24.1 Django中間件297
24.1.1 工作原理297
24.1.2 激活中間件299
24.1.3 編寫(xiě)中間件300
24.1.4 其他中間件鉤子301
24.2 Django信號(hào)簡(jiǎn)介303
24.2.1 信號(hào)機(jī)制簡(jiǎn)介303
24.2.2 監(jiān)聽(tīng)信號(hào)304
24.2.3 自定義信號(hào)306
24.2.4 發(fā)送信號(hào)306
24.3 Django緩存框架308
24.3.1 緩存機(jī)制簡(jiǎn)介308
24.3.2 設(shè)置緩存308
24.3.3 網(wǎng)站緩存311
24.3.4 視圖緩存311
24.3.5 模板分片緩存312
24.3.6 低層次緩存接口312
24.4 Django日志314
24.4.1 Django日志簡(jiǎn)介314
24.4.2 Django日志擴(kuò)展314
24.4.3 Django默認(rèn)日志配置315
24.5 Django發(fā)送郵件316
24.6 Django分頁(yè)316