內容簡介
本書基於Django 2.0,較為全面地介紹了Django 套用的開發過程、Django 核心紙戀欠潤模組的實現原理以及部署套用的相關技巧。全書共14 章,第1 章到第3 章對Django 框架淚芝探以及開發環境配置、項目框架搭建進行了介紹;第4 章到第13 章使用Django 內置的核心模組完成了套用的開發,並對各個模組符捆的實現原理進行了分析,包括ORM 實現原理擊炒多、模板系統實現原理、路由系統實現原理、信號工作原理等;第14 章介紹了部署Django 套用的過程。同時,本書針對出現的疑難內容,配有視頻講解,以便讀者更好地理解、套用Django 框架。
圖書目錄
第 1 章 初識Django 框架....... 1
1.1 催提抹Django 的產生背景........................1
1.1.1 Django 的創建背景......................... 1
1.1.2 Django 的版本發布過程................. 2
1.2 MTV 設計模式...............................2
1.2.1 熟悉的MVC 設計模式................... 2
1.2.2 Django 的MTV 設計模式............. 3
1.3 Django 提供的主要功能模組...........3
1.3.1 Django 中的ORM .......................... 3
1.3.2 用戶模組與許可權系統...................... 4
1.3.3 Admin 後台管理系統..................... 4
1.3.4 紋漏達項視圖.................................................. 5
1.3.5 模板系統.......................................... 5
1.3.6 優雅的表單系統Form ................... 5
1.3.7 信號機制.......................................... 6
1.3.8 路由系統.......................................... 7
1.3.9 中間件.............................................. 7
1.3.10 快取系統........................................ 8
第 2 章 Django 開發環境配置 .....................9
2.1 Python 的安裝與配置.....................9
2.1.1 安裝Python .................................... 9
2.1.2 Python 包管理工具......................10
2.2 虛擬環境的安裝與配置..................11
2.2.1 安裝Virtualenv ............................ 11
2.2.2 創建套用運行的虛擬環境............ 11
2.3 Django 的安裝與配置...................12
2.4 MySQL 的安裝與配置..................12
2.4.1 安裝MySQL ................................. 13
2.4.2 配置MySQL 環境變數................. 13
2.4.3 創建work 賬號............................. 14
2.5 PyCharm 的安裝與配置...............15
第 3 章 Django 項目框架搭建 ........................ 16
3.1 Django 管理工具創建項目骨架..... 16
3.1.1 django-admin 創建項目骨架...... 16
3.1.2 settings.py 檔案配置項解析....... 禁背台17
3.2 修改項目的默認配置.................... 19
3.2.1 配置語言環境和時區.................... 19
3.2.2 配置開發資料庫............................ 20
3.3 初始化項目環境............................20
3.3.1 INSTALLED_APPS 中套用的資料庫遷移.............. 21
3.3.2 創建超級用戶登錄管理後台........ 22
3.3.3 給BBS 項目創建套用.................. 23
3.3.4 Python 項目中的requirements.txt檔案 .................... 23
3.3.5 將項目裝載到IDE 中................... 24
第 4 章 Django ORM 套用與原理剖析.............25
4.1 構建post 套用需要的數據表..........25
4.1.1 post 套用的Models 定義............. 25
4.1.2 post 套用完成資料庫遷移........... 27
4.2 Model 相關的概念與使用方法........28
4.2.1 Model 的組成部分........................ 29
4.2.2 Meta 元數據類屬性說明.............. 30
4.2.3 Field 的通用欄位選項.................. 32
4.2.4 基礎欄位類型................................ 33
4.2.5 三種關係欄位類型........................ 35
4.2.6 Model 的繼承模型........................ 38
4.3 Model 的查詢操作API ................ 40
4.3.1 創建Model 實例對象...................40
4.3.2 返回單實例的查詢方法................ 41
4.3.3 返回QuerySet 的查詢方法......... 43
4.3.4 返回RawQuerySet 的查詢方法.................... 47
4.3.5 返回其他類型的查詢方法............ 48
4.3.6 存在關聯關係的查詢.................... 49
4.3.7 F 和Q 查詢.................................... 51
4.3.8 聚合查詢和分組查詢.................... 53
4.4 ORM 實現原理分析......................55
4.4.1 Python 元類.................................. 55
4.4.2 Python 描述符.............................. 57
4.4.3 繼承models.Model....................... 59
4.4.4 實現Manager ............................... 62
4.4.5 一次完整的ORM 實現過程......... 63
第 5 章 Django 管理後台......67
5.1 將Model 註冊到管理後台.............67
5.1.1 啟用管理後台的準備工作............ 67
5.1.2 實現Model 的註冊....................... 69
5.2 使用管理後台操作Model 對象實例........................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 管理後台實現原理分析..................88
5.4.1 Python 裝飾器.............................. 88
5.4.2 contenttypes 套用分析................90
5.4.3 Model 的註冊過程分析................ 93
5.4.4 管理後台入口實現分析................ 94
5.4.5 Django 載入套用admin 的過程分析................ 96
第 6 章 視圖........................99
6.1 視圖初探.................................... 99
6.1.1 定義第 一個視圖............................ 99
6.1.2 視圖的請求與回響對象.............. 101
6.1.3 基於類的視圖.............................. 105
6.1.4 動態路由...................................... 106
6.1.5 給post 套用添加視圖................ 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 的創建過程.......... 131
6.4.4 HttpResponse 的返回過程........ 133
第7 章 Django 模板系統.... 135
7.1 模板系統基礎.............................135
7.1.1 初次使用模板系統...................... 135
7.1.2 模板後端的默認配置.................. 137
7.1.3 將模板套用到視圖中.................. 139
7.1.4 RequestContext 和上下文處理器.................... 141
7.2 模板系統語法.............................143
7.2.1 模板變數與替換規則.................. 143
7.2.2 模板標籤...................................... 146
7.2.3 過濾器.......................................... 152
7.2.4 模板繼承...................................... 154
7.3 模板系統工作原理分析................156
7.3.1 模板檔案實現載入的過程.......... 156
7.3.2 模板渲染機制實現分析..............160
第8 章 Django 表單系統.... 165
8.1 認識表單...................................165
8.1.1 一個簡單的表單.......................... 165
8.1.2 完善表單處理存在的問題.......... 166
8.2 使用表單系統實現表單................168
8.2.1 使用Form 對象定義表單........... 168
8.2.2 常用的表單欄位類型.................. 171
8.2.3 自定義表單欄位類型.................. 174
8.2.4 自定義表單的驗證規則.............. 176
8.2.5 基於Model 定製的表單............. 177
8.3 表單系統的工作原理...................181
8.3.1 表單對象的創建過程.................. 181
8.3.2 表單對象校驗的實現過程.......... 182
8.3.3 表單對象生成HTML 的實現過程......................184
8.3.4 ModelForm 翻譯Model 的實現過程...................... 186
第9 章 用戶認證系統.......... 188
9.1 用戶與身份驗證..........................188
9.1.1 用戶與用戶組.............................. 188
9.1.2 用戶身份認證.............................. 191
9.2 許可權管理...................................193
9.2.1 定義許可權的數據表...................... 193
9.2.2 給Model 添加自定義的許可權.....194
9.2.3 許可權的授予與校驗...................... 195
9.2.4 許可權獲取與校驗的實現過程...... 197
9.3 用戶認證系統的套用...................199
9.3.1 自定義認證後端......................... 200
9.3.2 在模板中校驗用戶身份和許可權...201
9.3.3 身份驗證視圖..............................202
9.3.4 使用裝飾器限制對視圖的訪問.....................206
第 10 章 Django 路由系統....................209
10.1 路由系統基礎...........................209
10.1.1 認識URLconf........................... 209
10.1.2 URL 模式定義相關的函式...... 210
10.1.3 路由參數傳遞............................ 212
10.1.4 自定義錯誤頁面........................ 213
10.2 路由系統工作原理.....................215
10.2.1 偏函式....................................... 215
10.2.2 實現路由分發的include函式............ 216
10.2.3 path 函式的工作原理............... 217
10.2.4 HTTP 請求查找視圖的實現過程...................... 221
第 11 章 Django 中間件.....223
11.1 中間件基礎..............................223
11.1.1 中間件簡介................................ 223
11.1.2 中間件的鉤子函式.................... 224
11.1.3 自定義中間件............................ 226
11.2 Django 內置的中間件...............228
11.2.1 會話中間件SessionMiddleware ................. 229
11.2.2 身份認證中間件AuthenticationMiddleware .... 234
11.3 中間件的工作原理....................236
11.3.1 責任鏈設計模式........................ 236
11.3.2 中間件基類MiddlewareMixin .................... 237
11.3.3 中間件的裝載與執行................ 238
第 12 章 Django 信號機制....................242
12.1 信號的概念與套用.....................242
12.1.1 信號的基本概念........................ 242
12.1.2 內置的信號................................ 243
12.1.3 自定義信號................................246
12.2 信號的工作原理........................247
12.2.1 觀察者設計模式........................ 247
12.2.2 Python 中的弱引用..................248
12.2.3 Python 執行緒同步機制..............250
12.2.4 信號的工作過程........................ 252
第 13 章 單元測試.............. 257
13.1 初識單元測試...........................257
13.1.1 單元測試的基本概念................ 257
13.1.2 unittest 模組的使用方法......... 258
13.1.3 給Django 項目編寫單元測試....................260
13.2 單元測試的相關特性.................262
13.2.1 unittest 測試框架的特性......... 263
13.2.2 Django 單元測試中資料庫的配置..................... 265
13.2.3 Django 單元測試的常用測試工具....................... 266
13.2.4 統計測試代碼的覆蓋率............ 267
第 14 章 Django 項目的部署....................270
14.1 理解Python Web 套用.............270
14.1.1 認識WSGI 協定....................... 270
14.1.2 Python 內置的WSGI伺服器.................... 271
14.1.3 Django 框架中WSGI 協定的實現....................... 274
14.2 生產環境的搭建與配置..............279
14.2.1 Gunicorn 的安裝與配置........... 279
14.2.2 uWSGI 的安裝與配置.............. 282
14.2.3 Nginx 的安裝與配置................ 284
2.1.1 安裝Python .................................... 9
2.1.2 Python 包管理工具......................10
2.2 虛擬環境的安裝與配置..................11
2.2.1 安裝Virtualenv ............................ 11
2.2.2 創建套用運行的虛擬環境............ 11
2.3 Django 的安裝與配置...................12
2.4 MySQL 的安裝與配置..................12
2.4.1 安裝MySQL ................................. 13
2.4.2 配置MySQL 環境變數................. 13
2.4.3 創建work 賬號............................. 14
2.5 PyCharm 的安裝與配置...............15
第 3 章 Django 項目框架搭建 ........................ 16
3.1 Django 管理工具創建項目骨架..... 16
3.1.1 django-admin 創建項目骨架...... 16
3.1.2 settings.py 檔案配置項解析....... 17
3.2 修改項目的默認配置.................... 19
3.2.1 配置語言環境和時區.................... 19
3.2.2 配置開發資料庫............................ 20
3.3 初始化項目環境............................20
3.3.1 INSTALLED_APPS 中套用的資料庫遷移.............. 21
3.3.2 創建超級用戶登錄管理後台........ 22
3.3.3 給BBS 項目創建套用.................. 23
3.3.4 Python 項目中的requirements.txt檔案 .................... 23
3.3.5 將項目裝載到IDE 中................... 24
第 4 章 Django ORM 套用與原理剖析.............25
4.1 構建post 套用需要的數據表..........25
4.1.1 post 套用的Models 定義............. 25
4.1.2 post 套用完成資料庫遷移........... 27
4.2 Model 相關的概念與使用方法........28
4.2.1 Model 的組成部分........................ 29
4.2.2 Meta 元數據類屬性說明.............. 30