基本介紹
- 中文名:深入理解Django:框架內幕與實現原理
- 作者:沈聰、全樹強
- 出版社:電子工業出版社
- 出版時間:2021年11月
- 頁數:604 頁
- 定價:118 元
- 開本:16 開
- ISBN:9787121421884
圖書目錄,作者簡介,
圖書目錄
第1 章 Django 源碼的前置知識 ............................................................................................... 1
1.1 在學習Django 源碼前,該做什麼 ............................................................................. 1
1.1.1 Django 的版本選擇 ...................................................................................... 1
1.1.2 Django 源碼學習基礎 .................................................................................. 2
1.2 搭建Django 的調試環境和測試環境 .......................................................................... 3
1.2.1 調試django-admin 命令 .................................................................................. 3
1.2.2 調試manage.py 命令 ....................................................................................... 8
1.2.3 調試框架源碼 ................................................................................................. 11
1.2.4 搭建Django 的測試環境 ............................................................................... 15
1.3 學習Django 源碼的建議 ........................................................................................... 17
1.4 小結 ............................................................................................................................. 18
第2 章 Django 命令原理解析 ...................................................................................... 19
2.1 基礎方法介紹 ............................................................................................................. 19
2.2 startproject 命令的實現原理 ...................................................................................... 24
2.3 shell 命令的實現原理 ................................................................................................. 33
2.4 makemigrations 命令的實現原理 .............................................................................. 45
2.4.1 makemigrations 命令的基本操作示例 ........................................................ 45
2.4.2 遷移相關的基礎類與方法 ......................................................................... 47
2.4.3 追蹤makemigrations 命令 .......................................................................... 69
2.5 migrate 命令的實現原理 ............................................................................................ 78
2.6 小結 ............................................................................................................................. 90
第3 章 Django 內置的ORM 框架 ................................................................................ 91
3.1 讀取Django 項目的配置信息 ................................................................................... 91
3.1.1 Settings 類 .................................................................................................. 92
3.1.2 LazySettings 類 ........................................................................................... 94
3.2 ORM 框架的底層核心 ............................................................................................... 97
3.2.1 mysqlclient 模組中的常用方法 .................................................................. 97
3.2.2 ORM 框架的源碼解析 ............................................................................... 98
3.2.3 DatabaseWrapper 類的實戰案例 .............................................................. 108
3.3 Django 中資料庫操作背後的原理........................................................................... 116
3.3.1 在Django 中執行原生SQL 語句 ............................................................. 117
3.3.2 ORM 框架的基本操作 ............................................................................. 118
3.3.3 答疑解惑 .................................................................................................. 160
3.3.4 ORM 框架的聚合操作 ............................................................................. 162
3.4 ORM 框架的部分源碼解讀 ..................................................................................... 176
3.5 小結 ........................................................................................................................... 205
第4 章 Django 內置的模板系統 ................................................................................. 206
4.1 Django 內置的模板語法 .......................................................................................... 206
4.1.1 for 標籤 .................................................................................................... 207
4.1.2 if 標籤 ...................................................................................................... 211
4.1.3 csrf_token 標籤 ......................................................................................... 212
4.1.4 with 標籤 .................................................................................................. 212
4.1.5 cycle 標籤 ................................................................................................. 213
4.1.6 include 標籤 ............................................................................................. 214
4.1.7 過濾器標籤 .............................................................................................. 215
4.2 Django 內置模板引擎源碼解讀 .............................................................................. 216
4.3 答疑解惑 ................................................................................................................... 283
4.4 Jinja2 模組封裝過程解析 ......................................................................................... 299
4.5 小結 ........................................................................................................................... 303
第5 章 解讀Django 核心模組的源碼 ........................................................................ 304
5.1 core 目錄源碼一覽 ................................................................................................... 304
5.2 請求處理 ................................................................................................................... 305
5.3 快取模組 ................................................................................................................... 316
5.4 檢查模組 ................................................................................................................... 330
5.4.1 messages.py 檔案的源碼解析 ................................................................... 330
5.4.2 registry.py 檔案的源碼解析 ...................................................................... 333
5.5 序列化 ....................................................................................................................... 348
5.6 檔案模組 ................................................................................................................... 367
5.6.1 uploadedfile.py 檔案 ................................................................................. 367
5.6.2 images.py 檔案 ......................................................................................... 374
5.6.3 locks.py 檔案 ............................................................................................ 376
5.6.4 temp.py 檔案 ............................................................................................ 378
5.6.5 move.py 檔案 ........................................................................................... 379
5.6.6 storage.py 檔案 ......................................................................................... 381
5.6.7 uploadhandler.py 檔案 .............................................................................. 384
5.7 傳送郵件 ................................................................................................................... 393
5.8 小結 ........................................................................................................................... 405
第6 章 Django 的視圖層 ........................................................................................... 406
6.1 視圖層實戰 ............................................................................................................... 406
6.1.1 實驗1:Django 中的“hello, world” ....................................................... 406
6.1.2 實驗2:Django 中的視圖類 .................................................................... 409
6.1.3 實驗3:Django 中的請求傳參 ................................................................ 410
6.1.4 實驗4:Django 中的檔案上傳演示 ........................................................ 414
6.1.5 實驗5:在Django 中操作Session .......................................................... 417
6.2 請求與回響 ............................................................................................................... 419
6.2.1 HttpRequest 類的源碼 .............................................................................. 429
6.2.2 HttpResponse 類的源碼 ............................................................................ 433
6.2.3 HttpRequest 類和HttpResponseBase 類的操作示例 ................................ 440
6.3 視圖層核心源碼解讀 ............................................................................................... 444
6.3.1 HTTP 請求路徑的匹配過程 ..................................................................... 449
6.3.2 答疑解惑 .................................................................................................. 457
6.4 視圖類與Mixin 類 ................................................................................................... 462
6.4.1 Mixin 類的源碼解析 ................................................................................ 462
6.4.2 TemplateView 類的源碼解析 ................................................................... 463
6.4.3 RedirectView 類的源碼解析 ..................................................................... 467
6.4.4 DetailView 類和ListView 類的源碼解析 ................................................. 469
6.4.5 MultipleObjectMixin 類的源碼解析 ......................................................... 479
6.4.6 Paginator 類的源碼解析 ........................................................................... 482
6.5 追蹤Session 相關的源碼 ......................................................................................... 486
6.5.1 Session 相關的配置 .................................................................................. 486
6.5.2 Session 的存儲引擎 .................................................................................. 495
6.5.3 SessionBase 類中的代碼檔案 ................................................................... 502
6.6 答疑解惑 ................................................................................................................... 507
6.7 小結 ........................................................................................................................... 517
第7 章 Django 的中間件原理 .................................................................................... 518
7.1 配置中間件 ............................................................................................................... 518
7.2 載入中間件 ............................................................................................................... 519
7.3 中間件的處理流程 ................................................................................................... 521
7.3.1 中間件的請求處理流程 ........................................................................... 521
7.3.2 中間件的回響處理流程 ........................................................................... 525
7.3.3 中間件的其他鉤子方法 ........................................................................... 526
7.4 常用的中間件 ........................................................................................................... 528
7.4.1 Django 內置的中間件類 .......................................................................... 528
7.4.2 CsrfViewMiddleware 中間件 .................................................................... 529
7.5 自定義中間件 ........................................................................................................... 536
7.6 小結 ........................................................................................................................... 541
第8 章 解讀Django 中的輔助代碼 ............................................................................ 542
8.1 自動重載 ................................................................................................................... 542
8.2 日誌配置 ................................................................................................................... 552
8.2.1 日誌配置實戰 .......................................................................................... 553
8.2.2 日誌配置的源碼追蹤 ............................................................................... 555
8.3 時間解析 ................................................................................................................... 559
8.3.1 datetime_safe.py 檔案 ............................................................................... 559
8.3.2 dateformat.py 檔案 ................................................................................... 562
8.3.3 dateparse.py 檔案 ...................................................................................... 565
8.4 文本處理 ................................................................................................................... 569
8.5 其他的類與函式 ....................................................................................................... 582
8.6 小結 ........................................................................................................................... 589
作者簡介
沈聰,本科畢業於南昌大學,碩士畢業於武漢大學電子信息學院,畢業後進入天翼雲科技有限公司,在天翼雲媒體存儲小組從事大規模集群部署、運維平台開發及集群日常運維、巡檢等工作。擁有多年運維開發經驗,專注於Python自動化運維、雲存儲等方向,研究過數個熱門Pyth框架源碼,如Ansible、Django、Scrapy,在慕課網上發表了多個基礎教程,內容涉及Nginx入門、Python算法、Django框架及Scrapy框架,並出版了《吃透Ansible:核心源碼剖析與項目實戰》一書。
全樹強,本科和碩士皆畢業於武漢大學電子信息學院,畢業後進入天翼雲科技有限公司,在天翼雲媒體存儲小組負責媒體存儲小組內部的統一運維管理平台研發工作,對Django框架源碼有較為深入的研究,並且在Java後端和前端、以及自動化運維領域做過大量開發工作,有豐富的運維和開發經驗,是一位全棧工程師。