Python Django開發(fā)實(shí)戰(zhàn)(視頻講解版)
本書基于Django 2.0,較為全面地介紹了Django 應(yīng)用的開發(fā)過程、Django 核心模塊的實(shí)現(xiàn)原理以及部署應(yīng)用的相關(guān)技巧。全書共14 章,第1 章到第3 章對Django 框架以及開發(fā)環(huán)境配置、項(xiàng)目框架搭建進(jìn)行了介紹;第4 章到第13 章使用Django 內(nèi)置的核心模塊完成了應(yīng)用的開發(fā),并對各個(gè)模塊的實(shí)現(xiàn)原理進(jìn)行了分析,包括ORM 實(shí)現(xiàn)原理、模板系統(tǒng)實(shí)現(xiàn)原理、路由系統(tǒng)實(shí)現(xiàn)原理、信號工作原理等;第14 章介紹了部署Django 應(yīng)用的過程。同時(shí),本書針對出現(xiàn)的疑難內(nèi)容,配有視頻講解,以便讀者更好地理解、應(yīng)用Django 框架。
Python語言的熱度越來越高;赑ython的Web開發(fā)框架也越來越多,其中Django以快速開發(fā)、代碼結(jié)構(gòu)清晰以及功能齊全等優(yōu)點(diǎn),成為最受青睞的Web開發(fā)框架。
1. 作者是百度開發(fā)工程師,實(shí)際開發(fā)經(jīng)驗(yàn)豐富。
2. 書中案例來自于實(shí)際開發(fā)項(xiàng)目。
3. 配套教學(xué)視頻。
大連理工大學(xué)畢業(yè),先后在小米、春雨醫(yī)生從事軟件研發(fā)工作,目前在百度從事廣告系統(tǒng)方面的研發(fā)工作,目前是百度高級研發(fā)工程師。 擅長Web站點(diǎn)開發(fā),對Web框架有深入研究,大數(shù)據(jù)相關(guān)技術(shù)也有一定研究。
第 1 章 初識Django 框架....... 1
1.1 Django 的產(chǎn)生背景........................1
1.1.1 Django 的創(chuàng)建背景......................... 1
1.1.2 Django 的版本發(fā)布過程................. 2
1.2 MTV 設(shè)計(jì)模式...............................2
1.2.1 熟悉的MVC 設(shè)計(jì)模式................... 2
1.2.2 Django 的MTV 設(shè)計(jì)模式............. 3
1.3 Django 提供的主要功能模塊...........3
1.3.1 Django 中的ORM .......................... 3
1.3.2 用戶模塊與權(quán)限系統(tǒng)...................... 4
1.3.3 Admin 后臺管理系統(tǒng)..................... 4
1.3.4 視圖.................................................. 5
1.3.5 模板系統(tǒng).......................................... 5
1.3.6 優(yōu)雅的表單系統(tǒng)Form ................... 5
1.3.7 信號機(jī)制.......................................... 6
1.3.8 路由系統(tǒng).......................................... 7
1.3.9 中間件.............................................. 7
1.3.10 緩存系統(tǒng)........................................ 8
第 2 章 Django 開發(fā)環(huán)境配置 .....................9
2.1 Python 的安裝與配置.....................9
2.1.1 安裝Python .................................... 9
2.1.2 Python 包管理工具......................10
2.2 虛擬環(huán)境的安裝與配置..................11
2.2.1 安裝Virtualenv ............................ 11
2.2.2 創(chuàng)建應(yīng)用運(yùn)行的虛擬環(huán)境............ 11
2.3 Django 的安裝與配置...................12
2.4 MySQL 的安裝與配置..................12
2.4.1 安裝MySQL ................................. 13
2.4.2 配置MySQL 環(huán)境變量................. 13
2.4.3 創(chuàng)建work 賬號............................. 14
2.5 PyCharm 的安裝與配置...............15
第 3 章 Django 項(xiàng)目框架搭建 ........................ 16
3.1 Django 管理工具創(chuàng)建項(xiàng)目骨架..... 16
3.1.1 django-admin 創(chuàng)建項(xiàng)目骨架...... 16
3.1.2 settings.py 文件配置項(xiàng)解析....... 17
3.2 修改項(xiàng)目的默認(rèn)配置.................... 19
3.2.1 配置語言環(huán)境和時(shí)區(qū).................... 19
3.2.2 配置開發(fā)數(shù)據(jù)庫............................ 20
3.3 初始化項(xiàng)目環(huán)境............................20
3.3.1 INSTALLED_APPS 中應(yīng)用的數(shù)據(jù)庫遷移.............. 21
3.3.2 創(chuàng)建超級用戶登錄管理后臺........ 22
3.3.3 給BBS 項(xiàng)目創(chuàng)建應(yīng)用.................. 23
3.3.4 Python 項(xiàng)目中的requirements.txt文件 .................... 23
3.3.5 將項(xiàng)目裝載到IDE 中................... 24
第 4 章 Django ORM 應(yīng)用與原理剖析.............25
4.1 構(gòu)建post 應(yīng)用需要的數(shù)據(jù)表..........25
4.1.1 post 應(yīng)用的Models 定義............. 25
4.1.2 post 應(yīng)用完成數(shù)據(jù)庫遷移........... 27
4.2 Model 相關(guān)的概念與使用方法........28
4.2.1 Model 的組成部分........................ 29
4.2.2 Meta 元數(shù)據(jù)類屬性說明.............. 30
4.2.3 Field 的通用字段選項(xiàng).................. 32
4.2.4 基礎(chǔ)字段類型................................ 33
4.2.5 三種關(guān)系字段類型........................ 35
4.2.6 Model 的繼承模型........................ 38
4.3 Model 的查詢操作API ................ 40
4.3.1 創(chuàng)建Model 實(shí)例對象...................40
4.3.2 返回單實(shí)例的查詢方法................ 41
4.3.3 返回QuerySet 的查詢方法......... 43
4.3.4 返回RawQuerySet 的查詢方法.................... 47
4.3.5 返回其他類型的查詢方法............ 48
4.3.6 存在關(guān)聯(lián)關(guān)系的查詢.................... 49
4.3.7 F 和Q 查詢.................................... 51
4.3.8 聚合查詢和分組查詢.................... 53
4.4 ORM 實(shí)現(xiàn)原理分析......................55
4.4.1 Python 元類.................................. 55
4.4.2 Python 描述符.............................. 57
4.4.3 繼承models.Model....................... 59
4.4.4 實(shí)現(xiàn)Manager ............................... 62
4.4.5 一次完整的ORM 實(shí)現(xiàn)過程......... 63
第 5 章 Django 管理后臺......67
5.1 將Model 注冊到管理后臺.............67
5.1.1 啟用管理后臺的準(zhǔn)備工作............ 67
5.1.2 實(shí)現(xiàn)Model 的注冊....................... 69
5.2 使用管理后臺操作Model 對象實(shí)例........................70
5.2.1 管理后臺中的基本操作................70
5.2.2 管理后臺操作歷史........................ 73
5.3 使用ModelAdmin 自定義管理后臺.......................75
5.3.1 注冊Model 到Admin 的兩種方式........................ 75
5.3.2 ModelAdmin 的常用屬性............. 76
5.4 管理后臺實(shí)現(xiàn)原理分析..................88
5.4.1 Python 裝飾器.............................. 88
5.4.2 contenttypes 應(yīng)用分析................90
5.4.3 Model 的注冊過程分析................ 93
5.4.4 管理后臺入口實(shí)現(xiàn)分析................ 94
5.4.5 Django 加載應(yīng)用admin 的過程分析................ 96
第 6 章 視圖........................99
6.1 視圖初探.................................... 99
6.1.1 定義第 一個(gè)視圖............................ 99
6.1.2 視圖的請求與響應(yīng)對象.............. 101
6.1.3 基于類的視圖.............................. 105
6.1.4 動態(tài)路由...................................... 106
6.1.5 給post 應(yīng)用添加視圖................ 109
6.2 視圖的高級特性和快捷方法..........113
6.2.1 URL 的反向解析......................... 113
6.2.2 視圖重定向.................................. 115
6.2.3 常用的快捷方法.......................... 116
6.3 基于類的通用視圖......................118
6.3.1 用于渲染模板的TemplateView .................. 118
6.3.2 用于重定向的RedirectView..... 120
6.3.3 用于展示Model 列表的ListView ............... 122
6.3.4 用于展示Model 詳情的DetailView................... 125
6.4 視圖工作原理分析......................127
6.4.1 解決一鍵多值問題的QueryDict.................... 128
6.4.2 類視圖基類View 源碼分析....... 130
6.4.3 HttpRequest 的創(chuàng)建過程.......... 131
6.4.4 HttpResponse 的返回過程........ 133
第7 章 Django 模板系統(tǒng).... 135
7.1 模板系統(tǒng)基礎(chǔ).............................135
7.1.1 初次使用模板系統(tǒng)...................... 135
7.1.2 模板后端的默認(rèn)配置.................. 137
7.1.3 將模板應(yīng)用到視圖中.................. 139
7.1.4 RequestContext 和上下文處理器.................... 141
7.2 模板系統(tǒng)語法.............................143
7.2.1 模板變量與替換規(guī)則.................. 143
7.2.2 模板標(biāo)簽...................................... 146
7.2.3 過濾器.......................................... 152
7.2.4 模板繼承...................................... 154
7.3 模板系統(tǒng)工作原理分析................156
7.3.1 模板文件實(shí)現(xiàn)加載的過程.......... 156
7.3.2 模板渲染機(jī)制實(shí)現(xiàn)分析..............160
第8 章 Django 表單系統(tǒng).... 165
8.1 認(rèn)識表單...................................165
8.1.1 一個(gè)簡單的表單.......................... 165
8.1.2 完善表單處理存在的問題.......... 166
8.2 使用表單系統(tǒng)實(shí)現(xiàn)表單................168
8.2.1 使用Form 對象定義表單........... 168
8.2.2 常用的表單字段類型.................. 171
8.2.3 自定義表單字段類型.................. 174
8.2.4 自定義表單的驗(yàn)證規(guī)則.............. 176
8.2.5 基于Model 定制的表單............. 177
8.3 表單系統(tǒng)的工作原理...................181
8.3.1 表單對象的創(chuàng)建過程.................. 181
8.3.2 表單對象校驗(yàn)的實(shí)現(xiàn)過程.......... 182
8.3.3 表單對象生成HTML 的實(shí)現(xiàn)過程......................184
8.3.4 ModelForm 翻譯Model 的實(shí)現(xiàn)過程...................... 186
第9 章 用戶認(rèn)證系統(tǒng).......... 188
9.1 用戶與身份驗(yàn)證..........................188
9.1.1 用戶與用戶組.............................. 188
9.1.2 用戶身份認(rèn)證.............................. 191
9.2 權(quán)限管理...................................193
9.2.1 定義權(quán)限的數(shù)據(jù)表...................... 193
9.2.2 給Model 添加自定義的權(quán)限.....194
9.2.3 權(quán)限的授予與校驗(yàn)...................... 195
9.2.4 權(quán)限獲取與校驗(yàn)的實(shí)現(xiàn)過程...... 197
9.3 用戶認(rèn)證系統(tǒng)的應(yīng)用...................199
9.3.1 自定義認(rèn)證后端......................... 200
9.3.2 在模板中校驗(yàn)用戶身份和權(quán)限...201
9.3.3 身份驗(yàn)證視圖..............................202
9.3.4 使用裝飾器限制對視圖的訪問.....................206
第 10 章 Django 路由系統(tǒng)....................209
10.1 路由系統(tǒng)基礎(chǔ)...........................209
10.1.1 認(rèn)識URLconf........................... 209
10.1.2 URL 模式定義相關(guān)的函數(shù)...... 210
10.1.3 路由參數(shù)傳遞............................ 212
10.1.4 自定義錯(cuò)誤頁面........................ 213
10.2 路由系統(tǒng)工作原理.....................215
10.2.1 偏函數(shù)....................................... 215
10.2.2 實(shí)現(xiàn)路由分發(fā)的include函數(shù)............ 216
10.2.3 path 函數(shù)的工作原理............... 217
10.2.4 HTTP 請求查找視圖的實(shí)現(xiàn)過程...................... 221
第 11 章 Django 中間件.....223
11.1 中間件基礎(chǔ)..............................223
11.1.1 中間件簡介................................ 223
11.1.2 中間件的鉤子函數(shù).................... 224
11.1.3 自定義中間件............................ 226
11.2 Django 內(nèi)置的中間件...............228
11.2.1 會話中間件SessionMiddleware ................. 229
11.2.2 身份認(rèn)證中間件AuthenticationMiddleware .... 234
11.3 中間件的工作原理....................236
11.3.1 責(zé)任鏈設(shè)計(jì)模式........................ 236
11.3.2 中間件基類MiddlewareMixin .................... 237
11.3.3 中間件的裝載與執(zhí)行................ 238
第 12 章 Django 信號機(jī)制....................242
12.1 信號的概念與應(yīng)用.....................242
12.1.1 信號的基本概念........................ 242
12.1.2 內(nèi)置的信號................................ 243
12.1.3 自定義信號................................246
12.2 信號的工作原理........................247
12.2.1 觀察者設(shè)計(jì)模式........................ 247
12.2.2 Python 中的弱引用..................248
12.2.3 Python 線程同步機(jī)制..............250
12.2.4 信號的工作過程........................ 252
第 13 章 單元測試.............. 257
13.1 初識單元測試...........................257
13.1.1 單元測試的基本概念................ 257
13.1.2 unittest 模塊的使用方法......... 258
13.1.3 給Django 項(xiàng)目編寫單元測試....................260
13.2 單元測試的相關(guān)特性.................262
13.2.1 unittest 測試框架的特性......... 263
13.2.2 Django 單元測試中數(shù)據(jù)庫的配置..................... 265
13.2.3 Django 單元測試的常用測試工具....................... 266
13.2.4 統(tǒng)計(jì)測試代碼的覆蓋率............ 267
第 14 章 Django 項(xiàng)目的部署....................270
14.1 理解Python Web 應(yīng)用.............270
14.1.1 認(rèn)識WSGI 協(xié)議....................... 270
14.1.2 Python 內(nèi)置的WSGI服務(wù)器.................... 271
14.1.3 Django 框架中WSGI 協(xié)議的實(shí)現(xiàn)....................... 274
14.2 生產(chǎn)環(huán)境的搭建與配置..............279
14.2.1 Gunicorn 的安裝與配置........... 279
14.2.2 uWSGI 的安裝與配置.............. 282
14.2.3 Nginx 的安裝與配置................ 284