《Django4實例精解》是2023年清華大學出版社出版的圖書,作者是[美]安東尼奧·米勒,李偉譯。
基本介紹
- 中文名:Django4實例精解
- 作者:[美]安東尼奧·米勒
- 譯者:李偉
- 出版時間:2023年11月1日
- 出版社:清華大學出版社
- ISBN:9787302647904
- 定價:169 元
內容簡介,圖書目錄,
內容簡介
《Django4實例精解》詳細闡述了與Django 4相關的基本解決方案,主要包括構建一個部落格應用程式、利用高級特性增強部落格應用程式、擴展部落格應用程式、構建社交網站、實現社交身份驗證、共享網站上的內容、跟蹤用戶動作、構建線上商店、管理支付和訂單、擴展商店、向商店中添加國際化功能、構建線上學習平台、創建內容管理系統、渲染和快取內容、構建API、構建聊天伺服器、生產環境等內容。此外,本書還提供了相應的示例、代碼,以幫助讀者進一步理解相關方案的實現過程。
本書適合作為高等院校計算機及相關專業的教材和教學參考書,也可作為相關開發人員的自學用書和參考手冊。
圖書目錄
目 錄
第1章 構建一個部落格應用程式 1
1.1 安裝Python 2
1.2 創建Python虛擬環境 2
1.3 安裝Django 3
1.3.1 利用pip安裝Django 4
1.3.2 Django 4中的新特性 4
1.4 Django概述 5
1.5 主框架組件 5
1.6 Django架構 5
1.7 創建第一個項目 6
1.7.1 套用初始資料庫遷移 7
1.7.2 運行開發伺服器 8
1.7.3 項目設定項 10
1.7.4 項目和應用程式 11
1.7.5 創建一個應用程式 12
1.8 創建部落格數據模型 12
1.8.1 創建Post模型 13
1.8.2 添加日期時間欄位 14
1.8.3 定義默認排序順序 15
1.8.4 添加一個資料庫索引 16
1.8.5 激活應用程式 17
1.8.6 添加一個status欄位 17
1.8.7 添加多對一關係 20
1.8.8 創建並套用遷移 21
1.9 創建模型的管理網站 24
1.9.1 創建一個超級用戶 24
1.9.2 Django管理網站 24
1.9.3 向管理網站中添加模型 25
1.9.4 定製模型的顯示方式 27
1.10 與QuerySet和管理器協同工作 29
1.10.1 創建對象 30
1.10.2 更新對象 31
1.10.3 檢索對象 31
1.10.4 刪除對象 32
1.10.5 QuerySet何時取值 33
1.10.6 創建模型管理器 33
1.11 構建列表和詳細視圖 35
1.11.1 創建列表和詳細視圖 35
1.11.2 使用get_object_or_404捷徑 36
1.11.3 添加視圖的URL模式 37
1.12 創建視圖的模板 38
1.12.1 創建基礎模板 39
1.12.2 創建帖子列表模板 40
1.12.3 訪問應用程式 41
1.12.4 創建帖子詳細模板 41
1.13 請求/回響循環 42
1.14 附加資源 43
1.15 本章小結 44
第2章 利用高級特性增強部落格應用程式 45
2.1 使用模型的標準URL 45
2.2 創建帖子的SEO友好的URL 48
2.3 調整URL模式 49
2.4 調整視圖 50
2.5 調整帖子的標準URL 50
2.6 添加分頁 51
2.6.1 向帖子列表視圖中添加分頁 52
2.6.2 創建一個分頁模板 52
2.6.3 處理分頁錯誤 55
2.7 構建基於類的視圖 58
2.7.1 為何採用基於類的視圖 59
2.7.2 使用基於類的視圖列出帖子 59
2.8 基於電子郵件的推薦帖子 61
2.8.1 利用Django創建表單 61
2.8.2 處理視圖中的表單 63
2.8.3 利用Django傳送電子郵件 64
2.8.4 在視圖中傳送電子郵件 68
2.8.5 在模板中渲染表單 70
2.9 創建一個評論系統 74
2.9.1 創建一個評論模型 74
2.9.2 向管理網站中添加評論 76
2.9.3 從模型中創建表單 77
2.9.4 在視圖中處理ModelForms 78
2.9.5 創建評論表單的模板 80
2.9.6 向帖子詳細視圖中添加評論 82
2.9.7 向帖子詳細模板中添加評論 83
2.10 附加資源 89
2.11 本章小結 90
第3章 擴展部落格應用程式 91
3.1 添加標籤功能 91
3.2 根據相似性檢索帖子 100
3.3 創建自定義模板標籤和過濾器 105
3.3.1 實現自定義模板標籤 105
3.3.2 創建一個簡單的模板標籤 106
3.3.3 創建一個包含模板標籤 108
3.3.4 創建返回QuerySet的模板標籤 109
3.3.5 實現自定義模板過濾器 112
3.3.6 創建模板過濾器以支持Markdown語法 112
3.4 向網站中添加網站地圖 117
3.5 創建部落格帖子的訂閱源 121
3.6 向部落格中添加全文本搜尋 128
3.6.1 安裝PostgreSQL 129
3.6.2 創建PostgreSQL資料庫 129
3.6.3 轉儲現有的數據 130
3.6.4 切換項目中的資料庫 131
3.6.5 將數據載入至新資料庫中 132
3.6.6 簡單的搜尋查詢 133
3.6.7 針對多個欄位搜尋 134
3.6.8 構建一個搜尋視圖 134
3.6.9 詞幹和排名結果 138
3.6.10 不同語言中的詞幹提取和移除停用詞 139
3.6.11 加權查詢 140
3.6.12 使用三元組相似性進行搜尋 140
3.7 附加資源 142
3.8 本章小結 143
第4章 構建社交網站 145
4.1 創建社交網站項目 145
4.2 使用Django身份驗證框架 147
4.2.1 創建一個登錄視圖 148
4.2.2 使用Django身份驗證視圖 154
4.2.3 登錄和註銷視圖 155
4.2.4 修改密碼視圖 160
4.2.5 重置密碼視圖 163
4.3 用戶註冊和用戶個人信息 170
4.3.1 用戶註冊 170
4.3.2 擴展用戶模型 176
4.3.3 安裝Pillow並處理媒體檔案 177
4.3.4 創建資料模型的遷移 178
4.2.5 使用訊息框架 184
4.4 構建自定義身份驗證後端 187
4.5 附加資源 191
4.6 本章小結 192
第5章 實現社交身份驗證 193
5.1 向網站中添加社交身份驗證 193
5.1.1 通過HTTPS運行開發伺服器 196
5.1.2 利用Facebook進行身份驗證 199
5.1.3 利用Twitter進行身份驗證 206
5.1.4 使用Google進行身份驗證 215
5.1.5 為註冊社交認證的用戶創建資料檔案 223
5.2 附加資源 225
5.3 本章小結 226
第6章 共享網站上的內容 227
6.1 創建一個圖像收藏網站 227
6.1.1 構建圖像模型 228
6.1.2 創建多對多關係 230
6.1.3 在管理網站註冊圖像模型 231
6.2 從其他網站上發布內容 231
6.2.1 清除表單欄位 232
6.2.2 安裝Requests庫 233
6.2.3 覆寫ModelForm的ave()方法 233
6.2.4 利用JavaScript構建書籤工具 238
6.3 創建圖像的詳細視圖 250
6.4 利用easy-thumbnails創建圖像的縮略圖 253
6.5 利用JavaScript添加異步動作 255
6.5.1 在DOM上載入JavaScript 257
6.5.2 JavaScript中HTTP請求的跨站點請求偽造 258
6.5.3 利用JAvaScript實現HTTP請求 259
6.6 向圖像列表中添加無限滾動分頁機制 265
6.7 附加資源 271
6.8 本章小結 272
第7章 跟蹤用戶動作 273
7.1 構建關注系統 273
7.1.1 利用中間模型創建多對多關係 274
7.1.2 創建用戶資料的列表和詳細視圖 277
7.1.3 利用JavaScript添加關注/取消關注動作 282
7.2 構建通用的活動流應用程式 284
7.2.1 使用contenttypes框架 285
7.2.2 向模型中添加通用關係 286
7.2.3 避免活動流中的重複動作 289
7.2.4 向活動流中添加用戶動作 291
7.2.5 顯示活動流 293
7.2.6 最佳化涉及關聯對象的QuerySet 294
7.2.7 創建動作模板 296
7.3 針對反規範化計數使用信號 298
7.3.1 與信號協同工作 298
7.3.2 應用程式配置類 301
7.4 使用Django Debug Toolbar 303
7.4.1 安裝Django Debug Toolbar 303
7.4.2 Django Debug Toolbar 305
7.4.3 Django Debug Toolbar命令 308
7.5 利用Redis計數圖像視圖 309
7.5.1 安裝Docker 310
7.5.2 安裝Redis 310
7.5.3 通過Python使用Redis 312
7.5.4 將圖像視圖存儲於Redis中 313
7.5.5 將排名存儲於Redis中 315
7.5.6 Redis適用場景 317
7.6 附加資源 318
7.7 本章小結 319
第8章 構建線上商店 321
8.1 創建線上商店項目 321
8.1.1 創建商品目錄模型 322
8.1.2 在管理網站上註冊目錄模型 326
8.1.3 構建目錄視圖 328
8.1.4 創建目錄模板 330
8.2 構建購物車 335
8.2.1 使用Django會話 335
8.2.2 會話設定 336
8.2.3 會話過期 337
8.2.4 將購物車存儲至會話中 337
8.2.5 創建購物車視圖 341
8.2.6 針對當前購物車創建上下文處理器 349
8.3 註冊客戶訂單 352
8.3.1 創建訂單模型 352
8.3.2 在管理網站中包含訂單模型 354
8.3.3 創建自定義表單 355
8.4 異步任務 360
8.4.1 與異步任務協同工作 361
8.4.2 worker、訊息佇列和訊息代理 361
8.5 附加資源 371
8.6 本章小結 371
第9章 管理支付和訂單 373
9.1 集成支付網關 373
9.1.1 創建Stripe賬戶 374
9.1.2 安裝Stripe Python庫 376
9.1.3 向項目中添加Stripe 377
9.1.4 構建支付處理過程 378
9.1.5 測試結算過程 387
9.1.6 使用webhook接收支付通知 394
9.1.7 在訂單中引用Stripe支付 401
9.2 將訂單導出為CSV檔案 405
9.3 利用自定義視圖擴展管理網站 408
9.4 以動態方式生成PDF發票 413
9.4.1 安裝WeasyPrint 413
9.4.2 創建PDF模板 413
9.4.3 渲染PDF檔案 414
9.4.4 通過電子郵件傳送PDF檔案 418
9.5 附加資源 421
9.6 本章小結 422
第10章 擴展商店 423
10.1 創建優惠券系統 423
10.1.1 構建優惠券系統 424
10.1.2 將優惠券套用於購物車上 427
10.1.3 將優惠券套用於訂單上 434
10.1.4 針對Stripe Checkout創建優惠券 439
10.1.5 將優惠券添加至訂單和PDF發票中 441
10.2 構建推薦引擎 444
10.3 附加資源 452
10.4 本章小結 453
第11章 向商店中添加國際化功能 455
11.1 基於Django的國際化 455
11.1.1 國際化和本地化設定 456
11.1.2 國際化管理命令 457
11.1.3 安裝gettext工具集 457
11.1.4 如何向Django項目中添加翻譯 457
11.1.5 Django如何確定當前語言 457
11.2 準備項目以實現國際化 458
11.3 翻譯Python代碼 459
11.3.1 標準翻譯 460
11.3.2 延遲翻譯 460
11.3.3 變數翻譯 460
11.3.4 翻譯中的複數形式 460
11.3.5 翻譯自己的代碼 461
11.4 翻譯模板 465
11.4.1 {% trans %}模板標籤 465
11.4.2 {% blocktrans %}模板標籤 465
11.4.3 翻譯shop模板 466
11.5 使用Rosetta翻譯界面 470
11.6 模糊翻譯 472
11.7 國際化的URL模式 473
11.7.1 向URL模式中添加語言前綴 473
11.7.2 翻譯URL模式 474
11.8 允許用戶切換語言 478
11.9 利用django-parler翻譯模型 480
11.9.1 安裝django-parler 480
11.9.2 翻譯模型欄位 481
11.9.3 將翻譯集成至管理網站中 483
11.9.4 創建模型翻譯的遷移 484
11.9.5 結合ORM使用翻譯 486
11.9.6 調整翻譯視圖 487
11.10 本地化格式 489
11.11 使用django-localflavor驗證表單欄位 490
11.12 附加資源 491
11.13 本章小結 492
第12章 構建線上學習平台 493
12.1 設定線上學習項目 493
12.2 服務於媒體檔案 494
12.3 構建course模組 495
12.3.1 在管理網站中註冊模型 498
12.3.2 使用fixture提供模型的初始數據 498
12.4 針對多態內容創建模型 501
12.4.1 使用模型繼承 502
12.4.2 創建Content模型 504
12.4.3 創建自定義模型欄位 506
12.4.4 向模組和內容對象中添加順序 508
12.5 添加身份驗證視圖 512
12.5.1 添加身份驗證系統 512
12.5.2 創建身份驗證模板 513
12.6 附加資源 516
12.7 本章小結 517
第13章 創建內容管理系統 519
13.1 創建CMS 519
13.1.1 創建基於類的視圖 519
13.1.2 針對基於類的視圖使用混入 520
13.1.3 與分組和許可權協同工作 522
13.2 管理課程模組及其內容 530
13.2.1 對課程模組使用表單集 530
13.2.2 向課程模組添加內容 534
13.2.3 管理模組及其內容 539
13.2.4 重新排序模組及其內容 544
13.3 附加資源 552
13.4 本章小結 553
第14章 渲染和快取內容 555
14.1 顯示課程 555
14.2 添加學生註冊信息 561
14.2.1 創建學生的註冊視圖 561
14.2.2 註冊課程 564
14.3 訪問課程內容 567
14.4 使用快取框架 573
14.4.1 有效的快取後端 573
14.4.2 安裝Memcached 574
14.4.3 安裝Memcached Docker鏡像 574
14.4.4 安裝Memcached Python綁定 574
14.4.5 Django快取設定項 575
14.4.6 將Memcached添加至項目中 575
14.4.7 快取級別 576
14.4.8 使用低級別的快取API 576
14.4.9 利用Django Debug Toolbar檢查快取請求 578
14.4.10 基於動態數據的快取 581
14.4.11 快取模板片段 582
14.4.12 快取視圖 583
14.4.13 使用逐站點快取 583
14.4.14 使用Redis快取後端 585
14.4.15 利用Django Redisboard監視Redis 585
14.5 附加資源 587
14.6 本章小結 588
第15章 構建API 589
15.1 構建RESTful API 589
15.1.1 安裝Django REST框架 590
15.1.2 定義序列化器 591
15.1.3 理解解析器和渲染器 592
15.1.4 構建列表和詳細視圖 593
15.1.5 使用API 594
15.1.6 創建嵌套的序列化器 596
15.1.7 構建自定義API視圖 598
15.1.8 處理身份驗證 599
15.1.9 向視圖中添加許可權 600
15.1.10 構建ViewSet和路由器 601
15.1.11 向ViewSet添加附加動作 603
15.1.12 創建自定義許可權 604
15.1.13 序列化課程內容 604
15.1.14 使用RESTful API 607
15.2 附加資源 609
15.3 本章小結 610
第16章 構建聊天伺服器 611
16.1 創建聊天應用程式 611
16.2 基於Channels的實時Django 614
16.2.1 基於ASGI的異步應用程式 615
16.2.2 基於Channels的請求/回響循環 615
16.3 安裝Channels 617
16.4 編寫使用者 619
16.5 路由機制 620
16.6 實現WebSocket客戶端 621
16.7 啟用通道層 628
16.7.1 通道和分組 628
16.7.2 利用Redis設定通道層 628
16.7.3 更新使用者並廣播訊息 629
16.7.4 向訊息中添加上下文 634
16.8 將使用者調整為全異步 637
16.9 將聊天室應用程式與現有視圖集成 639
16.10 附加資源 640
16.11 本章小結 640
第17章 生產環境 641
17.1 創建生產環境 641
17.1.1 針對多個環境管理設定項 642
17.1.2 本地環境設定項 643
17.1.3 運行本地環境 643
17.1.4 生產環境設定項 644
17.2 使用Docker Compose 645
17.2.1 安裝Docker Compose 645
17.2.2 創建Dockerfile 646
17.2.3 添加Python需求條件 647
17.2.4 創建Docker Compose 648
17.2.5 配置PostgreSQL服務 651
17.2.6 套用資料庫遷移並創建超級用戶 654
17.2.7 配置Redis服務 654
17.3 利用WSGI和NGINX服務於Django 656
17.3.1 使用uWSGI 656
17.3.2 配置uWSGI 657
17.3.3 使用NGINX 658
17.3.4 配置NGINX 659
17.3.5 使用主機名 661
17.3.6 服務於靜態和媒體數據資源 662
17.4 基於SSL/TLS的站點的安全 665
17.4.1 針對生產環境檢查項目 665
17.4.2 針對SSL/TLS配置Django項目 666
17.4.3 生成SSL/TLS證書 667
17.4.4 配置NGINX以使用SSL/TLS 667
17.4.5 將HTTP流量重定向至HTTPS 670
17.5 針對Django Channels使用Daphne 671
17.5.1 針對WebSocket使用安全的連線 673
17.5.2 在NGINX配置中包含Daphne 673
17.6 創建自定義中間件 676
17.6.1 創建子域中間件 677
17.6.2 利用NGINX服務於多個子域 678
17.7 實現自定義管理命令 679
17.8 附加資源 681
17.9 本章小結 683