第1章 構建博客應用程序 1
1.1 安裝Django 1
1.1.1 創(chuàng)建隔離的Python環(huán)境 2
1.1.2 利用pip安裝Django 3
1.2 創(chuàng)建個項目 3
1.2.1 運行開發(fā)服務器 5
1.2.2 項目設置 7
1.2.3 項目和應用程序 8
1.2.4 創(chuàng)建應用程序 8
1.3 設計博客數據方案 9
1.3.1 激活應用程序 11
1.3.2 設置并使用遷移方案 11
1.4 針對模型創(chuàng)建管理站點 13
1.4.1 創(chuàng)建超級用戶 13
1.4.2 Django管理站點 14
1.4.3 向管理站點中添加模型 15
1.4.4 定制模型的顯示方式 17
1.5 與QuerySet和管理器協同工作 18
1.5.1 創(chuàng)建對象 19
1.5.2 更新對象 20
1.5.3 檢索對象 20
1.5.4 刪除對象 22
1.5.5 評估QuerySet 22
1.5.6 創(chuàng)建模型管理器 22
1.6 構建列表和詳細視圖 23
1.6.1 生成列表和視圖 24
1.6.2 向視圖添加URL路徑 25
1.6.3 模型的標準URL 26
1.7 創(chuàng)建視圖模板 27
1.8 添加分頁機制 30
1.9 使用基于類的視圖 33
1.10 本章小結 34
第2章 利用高級特性完善博客程序 35
2.1 通過電子郵件共享帖子 35
2.1.1 使用Django創(chuàng)建表單 36
2.1.2 處理視圖中的表單 37
2.1.3 利用Django發(fā)送郵件 38
2.1.4 渲染模板中的表單 41
2.2 構建評論系統 44
2.2.1 構建模型 44
2.2.2 創(chuàng)建模型中的表單 46
2.2.3 處理視圖中的ModelForms 47
2.2.4 向帖子詳細模板中添加評論 49
2.3 添加標簽功能 52
2.4 根據相似性檢索帖子 58
2.5 本章小結 60
第3章 擴展博客應用程序 61
3.1 創(chuàng)建自定義模板標簽和過濾器 61
3.1.1 自定義模板標簽 61
3.1.2 自定義模板過濾器 66
3.2 向站點添加網站地圖 69
3.3 創(chuàng)建帖子提要 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 創(chuàng)建社交型網站 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運行開發(fā)服務器 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 發(fā)布其他站點中的內容 139
5.2.1 清空表單字段 139
5.2.2 覆寫ModelForm的save()方法 140
5.2.3 利用jQuery構建書簽工具 145
5.3 創(chuàng)建圖像的細節(jié)視圖 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執(zhí)行AJAX請求 159
5.6 針對視圖創(chuàng)建自定義裝飾器 163
5.7 向列表視圖中添加AJAX分頁機制 164
5.8 本章小結 169
第6章 跟蹤用戶活動 171
6.1 構建關注系統 171
6.1.1 利用中間模型創(chuàng)建多對多關系 171
6.1.2 針對用戶配置創(chuàng)建列表和詳細視圖 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 優(yōu)化涉及關系對象的QuerySet 188
6.2.7 針對操作活動創(chuàng)建模板 189
6.3 利用信號實現反規(guī)范化計數 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 創(chuàng)建在線商店項目 205
7.1.1 創(chuàng)建商品目錄模型 206
7.1.2 注冊管理站點上的目錄模型 208
7.1.3 構建目錄視圖 210
7.1.4 創(chuàng)建目錄模板 212
7.2 創(chuàng)建購物車 216
7.2.1 使用Django會話 217
7.2.2 會話設置 217
7.2.3 會話過期 218
7.2.4 將購物車存儲于會話中 219
7.2.5 創(chuàng)建購物車視圖 223
7.2.6 針對購物車創(chuàng)建上下文處理器 230
7.3 注冊客戶訂單 232
7.3.1 創(chuàng)建訂單模型 232
7.3.2 在管理站點中包含訂單模型 234
7.3.3 創(chuàng)建客戶訂單 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 監(jiān)視Celery 244
7.5 本章小結 244
第8章 管理支付操作和訂單 245
8.1 整合支付網關 245
8.1.1 創(chuàng)建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 動態(tài)生成PDF發(fā)票 265
8.4.1 安裝WeasyPrint 265
8.4.2 創(chuàng)建PDF模板 265
8.4.3 顯示PDF文件 267
8.4.4 通過電子郵件發(fā)送PDF文件 270
8.5 本章小結 273
第9章 擴展在線商店應用程序 275
9.1 創(chuàng)建優(yōu)惠券系統 275
9.1.1 構建優(yōu)惠券模型 276
9.1.2 在購物車中使用優(yōu)惠券 278
9.1.3 在訂單中使用優(yōu)惠券 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 創(chuàng)建包含多樣化內容的模型 332
10.3.1 使用模型繼承機制 332
10.3.2 創(chuàng)建內容模型 334
10.3.3 創(chuàng)建自定義模型字段 337
10.3.4 向模塊和內容對象中添加順序機制 338
10.4 創(chuàng)建CMS 343
10.4.1 添加認證系統 343
10.4.2 創(chuàng)建認證模板 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 創(chuàng)建學生注冊視圖 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 監(jiān)控Memcached 396
11.5.6 緩存級別 397
11.5.7 使用底層緩存API 397
11.5.8 緩存動態(tài)數據 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 創(chuàng)建嵌套序列化器 412
12.1.6 構建自定義視圖 413
12.1.7 處理身份驗證 414
12.1.8 向視圖中添加權限 415
12.1.9 創(chuàng)建視圖集和路由器 417
12.1.10 向視圖集添加附加操作 418
12.1.11 創(chuàng)建自定義權限 419
12.1.12 序列化課程內容 420
12.1.13 使用RESTful API 422
12.2 本章小結 425
第13章 搭建聊天服務器 427
13.1 創(chuàng)建聊天應用程序 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 調整使用者使其處于完全異步狀態(tài) 451
13.9 集成聊天應用程序和視圖 453
13.10 本章小結 454
第14章 部署項目 455
14.1 創(chuàng)建產品環(huán)境 455
14.1.1 針對多種環(huán)境管理設置內容 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 產品環(huán)境 463
14.1.9 配置NGINX 463
14.1.10 向靜態(tài)和媒體數據集提供服務 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 創(chuàng)建自定義中間件 476
14.2.1 創(chuàng)建子域名中間件 477
14.2.2 利用NGINX向多個子域名提供服務 479
14.3 實現自定義管理命令 479
14.4 本章小結 482