Django 3 項目實例精解

Django 3 項目實例精解

作者: [美]安東尼奧·米勒 李偉 譯
出版社: 清華大學
出版在: 2021-06-01
ISBN-13: 9787302581840
ISBN-10: 7302581843
裝訂格式: 平裝
總頁數: 482 頁





內容描述


《Django 3項目實例精解》詳細闡述了與Django 3.0開發相關的基本解決方案,主要包括構建博客應用程序、利用高級特性完善博客程序、擴展博客應用程序、構建社交型網站、共享網站中的內容、跟蹤用戶活動、構建在線商店、管理支付操作和訂單、擴展在線商店應用程序、打造網絡教學平臺、渲染和緩存內容、構建API、搭建聊天服務器、部署項目等內容。此外,本書還提供了相應的示例、代碼,以幫助讀者進一步理解相關方案的實現過程。 本書適合作為高等院校電腦及相關專業的教材和教學參考書,也可作為相關開發人員的自學用書和參考手冊。


目錄大綱


第1章構建博客應用程序 1
1.1 安裝Django 1
1.1.1 創建隔離的Python環境 2
1.1.2 利用pip安裝Django 3
1.2 創建第一個項目 3
1.2.1 運行開發服務器 5
1.2.2 項目設置 7
1.2.3 項目和應用程序 8
1.2.4 創建應用程序 8
1.3 設計博客數據方案 9
1.3.1 激活應用程序11
1.3.2 設置並使用遷移方案11
1.4 針對模型創建管理站點13
1.4.1 創建超級用戶13
1.4.2 Django管理站點14
1.4.3 向管理站點中添加模型15
1.4.4 定制模型的顯示方式17
1.5 與QuerySet和管理器協同工作18
1.5.1 創建對象19
1.5.2 更新對象20
1.5.3 檢索對象20
1.5.4 刪除對象22
1.5.5 評估QuerySet 22
1.5.6 創建模型管理器22
1.6 構建列表和詳細視圖23
1.6.1 生成列表和視圖24
1.6.2 向視圖添加URL路徑25
1.6.3 模型的標準URL 26
1.7 創建視圖模板27
1.8 添加分頁機制30
1.9 使用基於類的視圖33
1.10 本章小結34
第2章利用高級特性完善博客程序35
2.1 通過電子郵件共享帖子35
2.1.1 使用Django創建表單36
2.1.2 處理視圖中的表單37
2.1.3 利用Django發送郵件38
2.1.4 渲染模板中的表單41
2.2 構建評論系統44
2.2.1 構建模型44
2.2.2 創建模型中的表單46
2.2.3 處理視圖中的ModelForms 47
2.2.4 向帖子詳細模板中添加評論49
2.3 添加標籤功能52
2.4 根據相似性檢索帖子58
2.5 本章小結60
第3章擴展博客應用程序61
3.1 創建自定義模板標籤和過濾器61
3.1.1 自定義模板標籤61
3.1.2 自定義模板過濾器66
3.2 向站點添加網站地圖69
3.3 創建帖子提要72
3.4 向博客中添加全文本搜索功能74
3.4.1 安裝PostgreSQL 75
3.4.2 簡單的查詢操作76
3.4.3 多字段搜索76
3.4.4 構建搜索視圖77
3.4.5 詞幹提取和排名79
3.4.6 加權查詢81
3.4.7 利用三元相似性進行搜索81
3.4.8 其他全文本搜索引擎82
3.5 本章小結82
第4章構建社交型網站​​83
4.1 創建社交型網站​​83
4.2 使用Django驗證框架84
4.2.1 構建登錄視圖85
4.2.2 使用Django驗證視圖90
4.2.3 登錄和註銷視圖91
4.2.4 修改密碼視圖96
4.2.5 重置密碼視圖98
4.3 用戶註冊和用戶配置104
4.3.1 用戶註冊104
4.3.2 擴展用戶模型107
4.3.3 使用自定義用戶模型113
4.3.4 使用消息框架113
4.4 構建自定義驗證後端116
4.5 向站點中添加社交網站驗證118
4.5.1 通過HTTPS運行開發服務器119
4.5.2 基於Facebook的驗證121
4.5.3 基於Twitter的驗證126
4.5.4 基於Google的驗證128
4.6 本章小結134
第5章共享網站中的內容135
5.1 構建圖像書籤網站135
5.1.1 構建圖像模型136
5.1.2 生成多對多關係137
5.1.3 在管理站點中註冊圖像模型138
5.2 發布其他站點中的內容139
5.2.1 清空表單字段139
5.2.2 覆寫ModelForm的save()方法140
5.2.3 利用jQuery構建書籤工具145
5.3 創建圖像的細節視圖152
5.4 利用easy-thumbnails生成圖像縮略圖155
5.5 利用jQuery添加AJAX操作156
5.5.1 加載jQuery 157
5.5.2 AJAX請求中的跨站點請求偽造158
5.5.3 利用jQuery執行AJAX請求159
5.6 針對視圖創建自定義裝飾器163
5.7 向列表視圖中添加AJAX分頁機制164
5.8 本章小結169
第6章跟踪用戶活動171
6.1 構建關注系統171
6.1.1 利用中間模型創建多對多關係171
6.1.2 針對用戶配置創建列表和詳細視圖174
6.1.3 構建AJAX視圖以關注用戶179
6.2 構建通用活動流應用程序181
6.2.1 使用contenttypes框架182
6.2.2 向模型中添加通用關係183
6.2.3 避免活動流中的重複內容186
6.2.4 向活動流中添加用戶活動187
6.2.5 顯示活動流188
6.2.6 優化涉及關係對象的QuerySet 188
6.2.7 針對操作活動創建模板189
6.3 利用信號實現反規範化計數192
6.3.1 與信號協同工作192
6.3.2 應用程序配置類194
6.4 利用Redis存儲數據項視圖196
6.4.1 安裝Redis 196
6.4.2 結合Python使用Redis 198
6.4.3 將數據視圖存儲於Redis中199
6.4.4 將排名結果存儲於數據庫中200
6.4.5 Redis特性203
6.5 本章小結203
第7章構建在線商店205
7.1 創建在線商店項目205
7.1.1 創建商品目錄模型206
7.1.2 註冊管理站點上的目錄模型208
7.1.3 構建目錄視圖210
7.1.4 創建目錄模板212
7.2 創建購物車216
7.2.1 使用Django會話217
7.2.2 會話設置217
7.2.3 會話過期218
7.2.4 將購物車存儲於會話中219
7.2.5 創建購物車視圖223
7.2.6 針對購物車創建上下文處理器230
7.3 註冊客戶訂單232
7.3.1 創建訂單模型232
7.3.2 在管理站點中包含訂單模型234
7.3.3 創建客戶訂單235
7.4 利用Celery啟動異步任務240
7.4.1 安裝Celery 240
7.4.2 安裝RabbitMQ 240
7.4.3 向項目中添加Celery 241
7.4.4 向應用程序中添加異步任務242
7.4.5 監視Celery 244
7.5 本章小結244
第8章管理支付操作和訂單245
8.1 整合支付網關245
8.1.1 創建Braintree沙箱賬號245
8.1.2 安裝Braintree Python模塊247
8.1.3 集成支付網關247
8.1.4 使用託管字段集成Braintree 249
8.1.5 支付的測試操作255
8.1.6 上線257
8.2 將訂單導出為CSV文件257
8.3 利用自定義視圖擴展管理站點260
8.4 動態生成PDF發票265
8.4.1 安裝WeasyPrint 265
8.4.2 創建PDF模板265
8.4.3 顯示PDF文件267
8.4.4 通過電子郵件發送PDF文件270
8.5 本章小結273
第9章擴展在線商店應用程序275
9.1 創建優惠券系統275
9.1.1 構建優惠券模型276
9.1.2 在購物車中使用優惠券278
9.1.3 在訂單中使用優惠券284
9.2 添加國際化和本地化機制286
9.2.1 Django的國際化處理286
9.2.2 項目的國際化288
9.2.3 翻譯Python代碼290
9.2.4 翻譯模板295
9.2.5 使用Rosetta翻譯接口299
9.2.6 模糊翻譯302
9.2.7 國際化的URL路徑302
9.2.8 切換語言304
9.2.9 利用django-parler翻譯模塊306
9.2.10 本地化格式314
9.2.11 使用django-localflavor驗證表單字段315
9.3 構建推薦引擎316
9.4 本章小結324
第10章打造網絡教學平台325
10.1 設置網絡教學項目325
10.2 構建課程模型326
10.2.1 在管理站點中註冊模型328
10.2.2 使用固定文件提供模型的初始數據329
10.3 創建包含多樣化內容的模型332
10.3.1 使用模型繼承機制332
10.3.2 創建內容模型334
10.3.3 創建自定義模型字段337
10.3.4 向模塊和內容對像中添加順序機制338
10.4 創建CMS 343
10.4.1 添加認證系統343
10.4.2 創建認證模板343
10.4.3 設置基於類的視圖346
10.4.4 針對基於類的視圖使用混合類347
10.4.5 分組和權限349
10.4.6 限制訪問基於類的視圖351
10.5 管理課程模塊和內容356
10.5.1 針對課程模塊使用表單集357
10.5.2 向課程模塊中添加內容361
10.5.3 管理模塊和內容366
10.5.4 對模塊和內容重排序370
10.6 本章小結374
第11章渲染和緩存內容375
11.1 顯示課程375
11.2 添加學生註冊機制380
11.2.1 創建學生註冊視圖381
11.2.2 註冊課程383
11.3 訪問課程內容387
11.4 渲染不同內容的類型390
11.5 使用緩存框架393
11.5.1 有效的緩存後端394
11.5.2 安裝Memcached 394
11.5.3 緩存設置395
11.5.4 向項目中添加Memcached 395
11.5.5 監控Memcached 396
11.5.6 緩存級別397
11.5.7 使用底層緩存API 397
11.5.8 緩存動態數據399
11.5.9 緩存模板片段400
11.5.10 緩存視圖402
11.5.11 使用每個站點緩存402
11.6 本章小結403
第12章構建API 405
12.1 構建RESTful API 405
12.1.1 安裝Django REST框架406
12.1.2 定義序列化器407
12.1.3 理解解析器和渲染器408
12.1.4 構建列表和詳細視圖409
12.1.5 創建嵌套序列化器412
12.1.6 構建自定義視圖413
12.1.7 處理身份驗證414
12.1.8 向視圖中添加權限415
12.1.9 創建視圖集和路由器417
12.1.10 向視圖集添加附加操作418
12.1.11 創建自定義權限419
12.1.12 序列化課程內容420
12.1.13 使用RESTful API 422
12.2 本章小結425
第13章搭建聊天服務器427
13.1 創建聊天應用程序427
13.1.1 實現聊天室視圖428
13.1.2 禁用站點緩存430
13.2 基於Channels的實時Django 431
13.2.1 基於ASGI的異步應用程序431
13.2.2 基於Channels的請求/響應週期431
13.3 安裝Channels 433
13.4 編寫使用者435
13.5 路由機制436
13.6 實現WebSocket客戶端437
13.7 啟用通道層442
13.7.1 通道和分組443
13.7.2 利用Redis設置通道層443
13.7.3 更新使用者以廣播消息444
13.7.4 將上下文添加至消息中448
13.8 調整使用者使其處於完全異步狀態451
13.9 集成聊天應用程序和視圖453
13.10 本章小結454
第14章部署項目455
14.1 創建產品環境455
14.1.1 針對多種環境管理設置內容455
14.1.2 使用PostgreSQL 458
14.1.3 項目檢查458
14.1.4 通過WSGI為Django提供服務459
14.1.5 安裝uWSGI 459
14.1.6 配置uWSGI 459
14.1.7 安裝NGINX 462
14.1.8 產品環境463
14.1.9 配置NGINX 463
14.1.10 向靜態和媒體數據集提供服務465
14.1.11 基於SSL/TLS的安全連接467
14.1.12 針對Django Channels使用Daphne 472
14.1.13 使用安全的WebSocket連接473
14.1.14 將Daphne包含於NGINX配置中473
14.2 創建自定義中間件476
14.2.1 創建子域名中間件477
14.2.2 利用NGINX向多個子域名提供服務479
14.3 實現自定義管理命令479
14.4 本章小結482




相關書籍

第三方 JavaScript 編程

作者 Ben Vinegar 維尼哲 Anton Kovalyov 科瓦羅夫

2021-06-01

Mathematics of Big Data: Spreadsheets, Databases, Matrices, and Graphs (Hardcover)

作者 Jeremy Kepner Hayden Jananthan

2021-06-01

Big Data: Techniques and Technologies in Geoinformatics (Hardcover)

作者 Hassan A. Karimi

2021-06-01