Django 3 Web 應用開發實戰

Django 3 Web 應用開發實戰

作者: 黃永祥
出版社: 清華大學
出版在: 2021-07-01
ISBN-13: 9787302580317
ISBN-10: 7302580316
裝訂格式: 平裝
總頁數: 623 頁





內容描述


本書以Django Web項目開發為主線,深入系統地介紹了Django 3在Web開發中的應用。從網站開發入門開始,逐步深入講述Django框架的各功能要點,每個功能要點從源碼角度分析,並在源碼的基礎上實現自定義的功能開發。還介紹了Django的第三方功能應用,如DRF框架開發API接口、生成網站驗證碼、站內搜索引擎、第三方網站實現賬號註冊、異步任務和定時任務、即時通信實現在線聊天。本書提供了4個實戰案例,包括信息反饋平臺、博客系統、音樂網站平臺、前後端分離與微服務架構,涵蓋了網站的單體式開發、前後端分離和微服務開發,從單一的網站開發轉變到網站架構設計開發。最後講述Django的上線部署方案,分別講述Django如何部署在Windows和Linux系統上。 本書內容豐富,技術新穎,註重實戰,適合有一定Python基礎的Web開發人員閱讀,也可用作培訓機構和大中專院校相關專業的教學參考書。


目錄大綱


目錄
1章 Django建站基礎 1
1.1 網站的定義及組成 1
1.2 網站的分類 2
1.3 網站運行原理及開發流程 4
1.3.1 常用術語 4
1.3.2 網站的運行原理 4
1.3.3 網站的開發流程 5
1.3.4 任務劃分 5
1.4 走進Django 6
1.5 安裝Django 6
1.6 創建項目 7
1.7 PyCharm創建項目 9
1.8 開啟Django Hello World 11
1.8.1 Django的作指令11
1.8.2 開啟Hello World之旅13
1.9 調試Django項目15
1.9.1 PyCharm斷點調試15
1.9.2 調試異常17
1.10 HTML、CSS和JavaScript 19
1.10.1 HTML 19
1.10.2 CSS 21
1.10.3 JavaScript 24
1.11 本章小結26
2章 Django配置信息29
2.1 基本配置信息29
2.2 資源文件配置31
2.2.1 資源路由——STATIC_URL 31
2.2.2 資源集合——STATICFILES_DIRS 32
2.2.3 資源部署——STATIC_ROOT 33
2.2.4 媒體資源——MEDIA 34
2.3 模板配置35
2.4 數據庫配置37
2.4.1 mysqlclient連接MySQL 37
2.4.2 pymysql連接MySQL 39
2.4.3 多個數據庫的連接方式40
2.4.4 使用配置文件動態連接數據庫41
2.4.5 通過SSH隧道遠程連接MySQL 43
2.5 中間件45
2.6 本章小結46
3章 初探路由48
3.1 路由定義規則48
3.1.1 Django 2以上版本路由定義48
3.1.2 Django 1.X路由定義51
3.1.3 路由變量的設置52
3.1.4 正則表達式的路由定義55
3.2 命名空間與路由命名56
3.2.1 命名空間namespace 56
3.2.2 路由命名name 57
3.3 路由的使用方式59
3.3.1 在模板中使用路由59
3.3.2 反向解析reverse與resolve 62
3.3.3 路由重定向65
3.4 本章小結67
4章 探究FBV視圖69
4.1 設置響應方式69
4.1.1 返迴響應內容69
4.1.2 設置重定向73
4.1.3 異常響應75
4.1.4 文件下載功能77
4.2 HTTP請求對象81
4.2.1 獲取請求信息82
4.2.2 文件上傳功能85
4.2.3 Cookie實現反爬蟲90
4.2.4 請求頭實現反爬蟲97
4.3 本章小結100
5章 探究CBV視圖102
5.1 數據顯示視圖102
5.1.1 重定向視圖RedirectView 102
5.1.2 基礎視圖TemplateView 105
5.1.3 列表視圖ListView 107
5.1.4 詳細視圖DetailView 112
5.2 數據作視圖115
5.2.1 表單視圖FormView 115
5.2.2 新增視圖CreateView 118
5.2.3 修改視圖UpdateView 120
5.2.4 刪除視圖DeleteView 122
5.3 日期篩選視圖124
5.3.1 月份視圖MonthArchiveView 126
5.3.2 週期視圖WeekArchiveView 131
5.4 本章小結133
6章 深入模板135
6.1 Django模板引擎135
6.1.1 模板上下文135
6.1.2 自定義標籤137
6.1.3 模板繼承141
6.1.4 自定義過濾器143
6.2 Jinja2模板引擎147
6.2.1 安裝與配置148
6.2.2 模板語法151
6.2.3 自定義過濾器153
6.3 本章小結154
7章 模型與數據庫156
7.1 模型定義與數據遷移156
7.1.1 定義模型157
7.1.2 開發個人的ORM框架160
7.1.3 數據遷移163
7.1.4 數據導入與導出167
7.2 數據表關係168
7.3 數據表作172
7.3.1 數據新增173
7.3.2 數據修改175
7.3.3 數據刪除176
7.3.4 數據查詢177
7.3.5 多表查詢181
7.3.6 執行SQL語句185
7.3.7 數據庫事務186
7.4 多數據庫的連接與使用189
7.4.1 多數據庫的連接189
7.4.2 多數據庫的使用191
7.5 動態創建模型與數據表194
7.6 MySQL分錶功能197
7.7 本章小結201
8章 表單與模型203
8.1 初識表單203
8.2 源碼分析Form 207
8.3 源碼分析ModelForm 213
8.4 視圖裡使用Form 217
8.5 視圖裡使用ModelForm 219
8.6 同一網頁多個表單222
8.7 一個表單多個按鈕225
8.8 表單的批量處理227
8.9 多文件批量上存231
8.10 本章小結236
9章 Admin後台系統238
9.1 走進Admin 238
9.2 源碼分析ModelAdmin 242
9.3 Admin首頁設置247
9.4 Admin的二次開發249
9.4.1 函數get_readonly_fields() 250
9.4.2 設置字段樣式251
9.4.3 函數get_queryset() 253
9.4.4 函數formfield_for_foreignkey() 253
9.4.5 函數formfield_for_choice_field() 254
9.4.6 函數save_model() 255
9.4.7 數據批量作257
9.4.8 自定義Admin模板258
9.4.9 自定義Admin後台系統260
9.5 本章小結266
10章 Auth認證系統268
10.1 內置User實現用戶管理268
10.2 發送郵件實現密碼找回276
10.3 模型User的擴展與使用283
10.4 權限的設置與使用290
10.5 自定義用戶權限292
10.6 設置網頁的訪問權限294
10.7 用戶組的設置與使用300
10.8 本章小結302
11章 常用的Web應用程序305
11.1 會話控制305
11.1.1 會話的配置與作305
11.1.2 使用會話實現商品搶購309
11.2 緩存機制315
11.2.1 緩存的類型與配置316
11.2.2 緩存的使用318
11.3 CSRF防護322
11.4 消息框架324
11.4.1 源碼分析消息框架324
11.4.2 消息框架的使用326
11.5 分頁功能330
11.5.1 源碼分析分頁功能330
11.5.2 分頁功能的使用333
11.6 國際化和本地化337
11.6.1 環境搭建與配置337
11.6.2 設置國際化338
11.6.3 設置本地化340
11.7 單元測試341
11.7.1 定義測試類342
11.7.2 運行測試用例348
11.8 自定義中間件349
11.8.1 中間件的定義過程349
11.8.2 中間件實現Cookie反爬蟲352
11.9 異步編程355
11.9.1 使用多線程355
11.9.2 啟用ASGI服務358
11.9.3 異步視圖359
11.9.4 異步與同步的轉換362
11.10 信號機制363
11.10.1 內置信號363
11.10.2 自定義信號367
11.10.3 訂單創建與取消369
11.11 本章小結373
12章 三方功能應用377
12.1 Django Rest Framework框架377
12.1.1 DRF的安裝與配置377
12.1.2 序列化類Serializer 379
12.1.3 模型序列化類ModelSerializer 383
12.1.4 序列化的嵌套使用386
12.2 驗證碼生成與使用389
12.2.1 Django Simple Captcha的安裝與配置389
12.2.2 使用驗證碼實現用戶登錄392
12.3 站內搜索引擎396
12.3.1 Django Haystack的安裝與配置396
12.3.2 使用搜索引擎實現產品搜索399
12.4 三方網站實現用戶註冊404
12.4.1 Social-Auth-App-Django的安裝與配置405
12.4.2 微博賬號實現用戶註冊409
12.5 異步任務和定時任務411
12.5.1 Celery的安裝與配置411
12.5.2 異步任務413
12.5.3 定時任務416
12.6 即時通信——在線聊天417
12.6.1 Channels的安裝與配置418
12.6.2 Web在線聊天功能421
12.7 本章小結425
13章 信息反饋平台的設計與實現427
13.1 項目設計與配置427
13.1.1 項目架構設計428
13.1.2 MySQL搭建與配置429
13.1.3 功能配置431
13.1.4 數據庫架構設計433
13.2 程序功能開發434
13.2.1 路由與視圖函數434
13.2.2 使用Jinja2編寫模板文件436
13.2.3 Admin後台系統439
13.3 測試與運行440
13.3.1 編寫單元測試440
13.3.2 運行與上線442
13.4 本章小結445
14章 個人博客系統的設計與實現447
14.1 項目設計與配置447
14.1.1 項目架構設計450
14.1.2 功能配置451
14.1.3 數據表架構設計453
14.1.4 定義路由列表456
14.1.5 編寫共用模板457
14.2 註冊與登錄460
14.3 博主資料信息464
14.4 圖片牆功能466
14.5 留言板功能468
14.6 文章列表472
14.7 文章正文內容475
14.8 Admin後台系統479
14.8.1 模型的數據管理479
14.8.2 自定義Admin的登錄頁面483
14.8.3 Django CKEditor生成文章編輯器485
14.9 測試與部署488
14.9.1 測試業務邏輯488
14.9.2 上線部署492
14.10 本章小結493
15章 音樂網站平台的設計與實現495
15.1 項目設計與配置495
15.1.1 項目架構設計499
15.1.2 功能配置500
15.1.3 數據表架構設計502
15.1.4 定義路由列表506
15.1.5 編寫共用模板507
15.2 網站首頁507
15.3 歌曲排行榜513
15.4 歌曲搜索517
15.5 歌曲播放與下載521
15.6 歌曲點評528
15.7 註冊與登錄533
15.8 用戶中心537
15.9 Admin後台系統541
15.10 自定義異常頁面544
15.11 部署與運行545
15.11.1 上線部署546
15.11.2 網站試運行547
15.12 本章小結548
16章 基於前後端分離與微服務架構的網站開發550
16.1 Vue框架550
16.1.1 Vue開發產品信息頁550
16.1.2 Vue發送AJAX請求554
16.2 Django開發API接口555
16.2.1 簡化Django內置功能555
16.2.2 設置跨域訪問557
16.2.3 使用路由視圖開發API接口558
16.2.4 DRF框架開發API接口561
16.3 微服務架構562
16.3.1 微服務實現原理562
16.3.2 功能拆分565
16.3.3 設計API網關569
16.3.4 調試與運行572
16.4 JWT認證573
16.4.1 認識JWT 573
16.4.2 DRF的JWT 574
16.5 微服務註冊與發現582
16.5.1 常用的服務註冊與發現框架582
16.5.2 Consul的安裝與接口583
16.5.3 Django與Consul的交互587
16.5.4 服務的運行與部署592
16.5.5 服務的負載均衡596
16.6 本章小結597
17章 Django項目上線部署599
17.1 基於Windows部署Django 599
17.1.1 安裝IIS服務器599
17.1.2 創建項目站點601
17.1.3 配置靜態資源604
17.2 基於Linu部署Django 605
17.2.1 安裝Linu虛擬機605
17.2.2 安裝Python 3 611
17.2.3 部署uWSGI服務器612
17.2.4 安裝Ngin部署項目615
17.3 本章小結616
附錄A Django面試題618
附錄B Django資源列表622


作者介紹


黃永祥,資深軟件工程師,從業10年,先後從事過系統開發和自動化開發工作,精通自動化測試技術(B/S和C/S),尤其是Python語言及Flask、Django框架,擁有豐富的開發經驗。已出版《實戰Python網絡爬蟲》《精通Python自動化編程》等圖書。




相關書籍

JavaScript編程精粹 (Mastering JavaScript)

作者 [印度] 韋德?安塔尼

2021-07-01

Joomla! 24-Hour Trainer (Paperback)

作者 Jen Kramer

2021-07-01

Learning Go: An Idiomatic Approach to Real-World Go Programming

作者 Bodner Jon

2021-07-01