Django4 實例精解 Django 4 By Example : Build powerful and reliable Python web applications from scratch, 4/e

[美]安東尼奧·米勒 著 李偉 譯

  • Django4 實例精解-preview-1
  • Django4 實例精解-preview-2
  • Django4 實例精解-preview-3
Django4 實例精解-preview-1

買這商品的人也買了...

商品描述

《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