內容簡介
本書詳細闡述了與Flask開發相關的基本解決方案,主要包括“配置Flask”“基於Jinja2的模板機制”“Flask中的數據模型”“與視圖協同工作”“WTForms”“Flask中的身份驗證機制”“構建RESTful API”“Flask應用程式管理接口”“國際化和本地化”“調試、錯誤處理和測試”“部署和後期部署”“微服務和容器”“提示和技巧”等內容。此外,本書還提供了相應的示例、代碼,以幫助讀者進一步理解相關方案的實現過程。 本書適合作為高等院校計算機及相關專業的教材和教學參考書,也可作為相關開發人員燥仔歸的自學教材和參考手冊。
圖書目錄
第1章 配置Flask
1.1 利用virtualenv設定開發環境 3
1.1.1 實現方式 3
1.1.2 工作方式 3
1.1.3 更多內容 4
1.1.4 另請參閱 5
1.2 處理基本的配置問題 5
1.2.1 準備工作 5
1.2.2 實現方式 6
1.2.3 工作方式 7
1.3 配置基於類的設定 7
1.3.1 實現方式 7
1.3.2 工作方式 8
1.4 組織靜態檔案 8
1.4.1 實現方式 8
1.4.2 工作方式 9
1.4.3 更多霉挨請內容 9
1.5 特定於部署的實例資料夾 10
1.5.1 實現方式 10
1.5.2 工作方式 11
1.6 視圖和模型的組合 11
1.6.1 實現方式 11
1.6.2 工作方式 13
1.6.3 另請參閱 14
1.7 利用Blueprint創建模組化的Web應用程式 14
1.7.1 準備工作 14
1.7.2 實現方式 14
1.7.3 工作方式 15
1.7.4 另請參閱 16
1.8 通過setuptools安裝Flask應用程式 16
1.8.1 實現方式 16
1.8.2 工作方式 17
1.8.3 另請參閱 17
第2章 基於Jinja2的模板機制
2.1 引導戒盛糠推薦的布局 20
2.1.1 準備工作 20
2.1.2 實現方式 20
2.1.3 工作方式 21
2.2 實現塊組合和布局繼承 22
2.2.1 準雄斷備工作 22
2.2.2 實現方式 22
2.2.3 工作方式 26
2.3 創建自定義上下文處理器 28
2.4 創建自定義Jinja2過濾器 29
2.4.1 實現方式 29
2.4.2 工作方式 30
2.4.3 另請參閱 31
2.5 為表單創禁定獄阿建自定義宏 31
2.5.1 準備工作 31
2.5.2 實現方式 31
2.6 高級日期和時間格式 32
2.6.1 準備工作 32
2.6.2 實現方式 33
2.6.3 另請參閱 34
第3章 Flask中的數據模型
3.1 創建SQLAlchemy DB實例 35
3.1.1 準備工作 36
3.1.2 實現方式 36
3.1.3 更多內容 37
3.1.4 另請參閱 38
3.2 創建基本的產品模型 38
3.2.1 實現方式 38
3.2.2 工作方式 41
3.2.3 另請參閱 41
3.3 創建關係分類模型 41
3.3.1 實現方式 41
3.3.2 另請參閱 44
3.4 利用Alembic和Flask-Migrate遷移資料庫 44
3.4.1 準備工作 45
3.4.2 實現方式 45
3.4.3 工作方式 46
3.4.4 另請參閱 47
3.5 基於Redis的索引模型數據 47
3.5.1 準備棕厚察抹工作 48
3.5.2 實現方式 48
3.5.3 工作匪訂臘方式 49
3.6 基於MongoDB的NoSQL方式 49
3.6.1 準備工作 49
3.6.2 實現方式 50
3.6.3 另請參閱 52
第4章 與視圖協同工作
4.1 編寫基於函式的視圖和URL路由 53
4.1.1 準備工作 53
4.1.2 實現方式 54
4.1.3 工作方式 55
4.1.4 更多內容 55
4.2 編寫基於類的視圖 56
4.2.1 準備工作 56
4.2.2 實現方式 56
4.2.3 工作方式 57
4.2.4 更多內容 57
4.2.5 另請參閱 58
4.3 實現URL路由機制和基於產品的分頁機制 58
4.3.1 準備工作 58
4.3.2 實現方式 58
4.3.3 另請參閱 60
4.4 渲染至模板 60
4.4.1 準備工作 60
4.4.2 實現方式 60
4.4.3 工作方式 64
4.4.4 另請參閱 65
4.5 處理XHR請求 65
4.5.1 準備工作 65
4.5.2 實現方式 65
4.5.3 工作方式 67
4.6 使用裝飾器處理請求 67
4.6.1 準備工作 67
4.6.2 實現方式 67
4.6.3 另請參閱 68
4.7 創建自定義的404和500處理程式 68
4.7.1 準備工作 69
4.7.2 實現方式 69
4.7.3 工作方式 69
4.7.4 更多內容 70
4.8 閃動訊息以獲得更好的用戶反饋 70
4.8.1 準備工作 70
4.8.2 實現方式 70
4.8.3 工作方式 73
4.9 實現基於SQL的搜尋機制 73
4.9.1 準備工作 74
4.9.2 實現方式 74
4.9.3 工作方式 75
第5章 WTForms
5.1 將SQLAlchemy模型數據表示為表單 77
5.1.1 準備工作 78
5.1.2 實現方式 78
5.1.3 工作方式 80
5.1.4 另請參閱 80
5.2 驗證伺服器端上的欄位 80
5.2.1 實現方式 81
5.2.2 工作方式 82
5.2.3 更多內容 83
5.2.4 另請參閱 83
5.3 創建公共表單集合 83
5.3.1 實現方式 84
5.3.2 工作方式 85
5.4 創建自定義欄位和驗證 86
5.4.1 實現方式 86
5.4.2 工作方式 87
5.4.3 更多內容 87
5.5 創建自定義微件 88
5.5.1 實現方式 88
5.5.2 工作方式 89
5.5.3 另請參閱 89
5.6 通過表單上傳檔案 90
5.6.1 實現方式 90
5.6.2 工作方式 92
5.7 保護應用程式免受跨站點請求偽造(CSRF) 93
5.7.1 實現方式 93
5.7.2 工作方式 95
第6章 Flask中的身份驗證機制
6.1 創建簡單的基於會話的身份驗證 97
6.1.1 準備工作 98
6.1.2 實現方式 98
6.1.3 工作方式 103
6.1.4 另請參閱 104
6.2 基於Flask-Login擴展的身份驗證 104
6.2.1 準備工作 105
6.2.2 實現方式 105
6.2.3 工作方式 108
6.2.4 更多內容 108
6.2.5 另請參閱 108
6.3 使用Facebook進行身份驗證 108
6.3.1 準備工作 108
6.3.2 實現方式 110
6.3.3 工作方式 112
6.4 使用Google進行身份驗證 112
6.4.1 準備工作 113
6.4.2 實現方式 114
6.4.3 工作方式 115
6.5 使用Twitter進行身份驗證 115
6.5.1 準備工作 116
6.5.2 實現方式 116
6.5.3 工作方式 118
6.6 基於LDAP的身份驗證機制 118
6.6.1 準備工作 118
6.6.2 實現方式 119
6.6.3 工作方式 122
6.6.4 另請參閱 123
第7章 構建RESTful API
7.1 創建基於類的REST接口 126
7.1.1 準備工作 126
7.1.2 實現方式 126
7.1.3 工作方式 127
7.2 創建基於擴展的REST接口 127
7.2.1 準備工作 128
7.2.2 實現方式 128
7.2.3 工作方式 129
7.2.4 另請參閱 129
7.3 創建完整的RESTful API 130
7.3.1 準備工作 130
7.3.2 實現方式 130
7.3.3 工作方式 132
第8章 Flask應用程式管理接口
8.1 創建簡單的CRUD接口 135
8.1.1 準備工作 136
8.1.2 實現方式 136
8.1.3 工作方式 139
8.2 使用Flask-Admin擴展 141
8.2.1 準備工作 141
8.2.2 實現方式 141
8.2.3 工作方式 142
8.2.4 更多內容 142
8.3 利用Flask-Admin註冊模型 143
8.3.1 準備工作 143
8.3.2 實現方式 143
8.3.3 工作方式 145
8.4 創建自定義表單和操作 146
8.4.1 準備工作 146
8.4.2 實現方式 146
8.4.3 工作方式 148
8.5 使用WYSIWYG(所見即所得)編輯器 148
8.5.1 準備工作 149
8.5.2 實現方式 149
8.5.3 工作方式 150
8.5.4 另請參閱 151
8.6 創建用戶角色 151
8.6.1 準備工作 151
8.6.2 實現方式 152
8.6.3 工作方式 154
第9章 國際化和本地化
9.1 添加一種新語言 155
9.1.1 準備工作 155
9.1.2 實現方式 156
9.1.3 工作方式 158
9.1.4 更多內容 159
9.1.5 另請參閱 159
9.2 實現延遲處理和gettext/ngettext函式 159
9.2.1 準備工作 160
9.2.2 實現方式 160
9.3 實現全球語言切換操作 161
9.3.1 準備工作 161
9.3.2 實現方式 162
9.3.3 工作方式 163
9.3.4 另請參閱 163
第10章 調試、錯誤處理和測試
10.1 設定基本的檔案日誌系統 166
10.1.1 準備工作 166
10.1.2 實現方式 166
10.1.3 工作方式 167
10.1.4 更多內容 168
10.1.5 另請參閱 168
10.2 在出現錯誤時傳送電子郵件 168
10.2.1 準備工作 169
10.2.2 工作方式 169
10.2.3 工作方式 170
10.2.4 更多內容 170
10.3 使用Sentry監視異常 170
10.3.1 準備工作 170
10.3.2 實現方式 170
10.3.3 工作方式 172
10.4 基於pdb的調試機制 172
10.4.1 準備工作 172
10.4.2 實現方式 173
10.4.3 工作方式 173
10.4.4 另請參閱 173
10.5 創建簡單的測試 174
10.5.1 準備工作 174
10.5.2 實現方式 174
10.5.3 工作方式 175
10.5.4 另請參閱 175
10.6 針對視圖和邏輯編寫多項測試 176
10.6.1 準備工作 176
10.6.2 實現方式 176
10.6.3 工作方式 179
10.7 nose庫集成 179
10.7.1 準備工作 180
10.7.2 實現方式 180
10.7.3 另請參閱 180
10.8 使用Mocking避免訪問API 181
10.8.1 準備工作 181
10.8.2 實現方式 182
10.8.3 工作方式 184
10.8.4 另請參閱 184
10.9 確定測試覆蓋率 184
10.9.1 準備工作 184
10.9.2 實現方式 185
10.9.3 工作方式 186
10.9.4 另請參閱 187
10.10 使用性能分析查找瓶頸 187
10.10.1 準備工作 187
10.10.2 實現方式 187
10.10.3 工作方式 187
第11章 部署和後期部署
11.1 基於Apache的部署機制 189
11.1.1 準備工作 190
11.1.2 實現方式 191
11.1.3 工作方式 192
11.1.4 更多內容 192
11.1.5 另請參閱 193
11.2 基於uWSGI和Nginx的部署機制 193
11.2.1 準備工作 193
11.2.2 實現方式 193
11.2.3 另請參閱 195
11.3 基於Gunicorn和Supervisor的部署機制 195
11.3.1 準備工作 196
11.3.2 實現方式 196
11.3.3 工作方式 197
11.3.4 另請參閱 197
11.4 基於Tornado的部署 198
11.4.1 準備工作 198
11.4.2 實現方式 198
11.4.3 工作方式 199
11.5 針對檔案上傳使用S3存儲 199
11.5.1 準備工作 199
11.5.2 實現方式 199
11.5.3 工作方式 201
11.5.4 另請參閱 201
11.6 基於Heroku的部署 201
11.6.1 準備工作 201
11.6.2 實現方式 202
11.6.3 準備工作 204
11.6.4 更多內容 204
11.7 基於AWS Elastic Beanstalk的部署機制 204
11.7.1 準備工作 204
11.7.2 實現方式 205
11.7.3 工作方式 206
11.8 利用New Relic管理和監控應用程式 208
11.8.1 準備工作 208
11.8.2 實現方式 209
11.8.3 工作方式 210
11.8.4 另請參閱 210
第12中 微服務和容器
12.1 基於Docker的容器化機制 211
12.1.1 準備工作 212
12.1.2 實現方式 213
12.1.3 工作方式 215
12.1.4 另請參閱 215
12.2 基於Kubernetes的編排容器 216
12.2.1 準備工作 216
12.2.2 實現方式 216
12.2.3 工作方式 218
12.2.4 更多內容 219
12.2.5 另請參閱 220
12.3 AWS Lambda上基於Zappa的無伺服器操作 220
12.3.1 準備工作 220
12.3.2 實現方式 220
12.3.3 工作方式 223
12.3.4 另請參閱 224
第13章 提示和技巧
13.1 實現基於Whoosh的全文本搜尋 225
13.1.1 準備工作 226
13.1.2 實現方式 226
13.1.3 工作方式 227
13.1.4 另請參閱 227
13.2 實現基於Elasticsearch的全文本搜尋 227
13.2.1 準備工作 228
13.2.2 實現方式 228
13.2.3 工作方式 230
13.3 與信號協同工作 230
13.3.1 準備工作 230
13.3.2 實現方式 231
13.3.3 工作方式 232
13.3.4 另請參閱 232
13.4 在應用程式中使用快取 232
13.4.1 準備工作 233
13.4.2 實現方式 233
13.4.3 工作方式 233
13.4.4 更多內容 234
13.4.5 另請參閱 234
13.5 實現Flask應用程式的電子郵件支持 234
13.5.1 準備工作 235
13.5.2 實現方式 235
13.5.3 工作方式 235
13.5.4 更多內容 236
13.5.5 另請參閱 237
13.6 了解異步操作 237
13.6.1 準備工作 237
13.6.2 實現方式 237
13.6.3 工作方式 238
13.7 與Celery協同工作 238
13.7.1 準備工作 238
13.7.2 實現方式 238
13.7.3 工作方式 240
13.7.4 另請參閱 240
2.5.2 實現方式 31
2.6 高級日期和時間格式 32
2.6.1 準備工作 32
2.6.2 實現方式 33
2.6.3 另請參閱 34
第3章 Flask中的數據模型
3.1 創建SQLAlchemy DB實例 35
3.1.1 準備工作 36
3.1.2 實現方式 36
3.1.3 更多內容 37
3.1.4 另請參閱 38
3.2 創建基本的產品模型 38
3.2.1 實現方式 38
3.2.2 工作方式 41
3.2.3 另請參閱 41
3.3 創建關係分類模型 41
3.3.1 實現方式 41
3.3.2 另請參閱 44
3.4 利用Alembic和Flask-Migrate遷移資料庫 44
3.4.1 準備工作 45
3.4.2 實現方式 45
3.4.3 工作方式 46
3.4.4 另請參閱 47
3.5 基於Redis的索引模型數據 47
3.5.1 準備工作 48
3.5.2 實現方式 48
3.5.3 工作方式 49
3.6 基於MongoDB的NoSQL方式 49
3.6.1 準備工作 49
3.6.2 實現方式 50
3.6.3 另請參閱 52
第4章 與視圖協同工作
4.1 編寫基於函式的視圖和URL路由 53
4.1.1 準備工作 53
4.1.2 實現方式 54
4.1.3 工作方式 55
4.1.4 更多內容 55
4.2 編寫基於類的視圖 56
4.2.1 準備工作 56
4.2.2 實現方式 56
4.2.3 工作方式 57
4.2.4 更多內容 57
4.2.5 另請參閱 58
4.3 實現URL路由機制和基於產品的分頁機制 58
4.3.1 準備工作 58
4.3.2 實現方式 58
4.3.3 另請參閱 60
4.4 渲染至模板 60
4.4.1 準備工作 60
4.4.2 實現方式 60
4.4.3 工作方式 64
4.4.4 另請參閱 65
4.5 處理XHR請求 65
4.5.1 準備工作 65
4.5.2 實現方式 65
4.5.3 工作方式 67
4.6 使用裝飾器處理請求 67
4.6.1 準備工作 67
4.6.2 實現方式 67
4.6.3 另請參閱 68
4.7 創建自定義的404和500處理程式 68
4.7.1 準備工作 69
4.7.2 實現方式 69
4.7.3 工作方式 69
4.7.4 更多內容 70
4.8 閃動訊息以獲得更好的用戶反饋 70
4.8.1 準備工作 70
4.8.2 實現方式 70
4.8.3 工作方式 73
4.9 實現基於SQL的搜尋機制 73
4.9.1 準備工作 74
4.9.2 實現方式 74
4.9.3 工作方式 75
第5章 WTForms
5.1 將SQLAlchemy模型數據表示為表單 77
5.1.1 準備工作 78
5.1.2 實現方式 78
5.1.3 工作方式 80
5.1.4 另請參閱 80
5.2 驗證伺服器端上的欄位 80
5.2.1 實現方式 81
5.2.2 工作方式 82
5.2.3 更多內容 83
5.2.4 另請參閱 83
5.3 創建公共表單集合 83
5.3.1 實現方式 84
5.3.2 工作方式 85
5.4 創建自定義欄位和驗證 86
5.4.1 實現方式 86
5.4.2 工作方式 87
5.4.3 更多內容 87
5.5 創建自定義微件 88
5.5.1 實現方式 88
5.5.2 工作方式 89
5.5.3 另請參閱 89
5.6 通過表單上傳檔案 90
5.6.1 實現方式 90
5.6.2 工作方式 92
5.7 保護應用程式免受跨站點請求偽造(CSRF) 93
5.7.1 實現方式 93
5.7.2 工作方式 95
第6章 Flask中的身份驗證機制
6.1 創建簡單的基於會話的身份驗證 97
6.1.1 準備工作 98
6.1.2 實現方式 98
6.1.3 工作方式 103
6.1.4 另請參閱 104
6.2 基於Flask-Login擴展的身份驗證 104
6.2.1 準備工作 105
6.2.2 實現方式 105
6.2.3 工作方式 108
6.2.4 更多內容 108
6.2.5 另請參閱 108
6.3 使用Facebook進行身份驗證 108
6.3.1 準備工作 108
6.3.2 實現方式 110
6.3.3 工作方式 112
6.4 使用Google進行身份驗證 112
6.4.1 準備工作 113
6.4.2 實現方式 114
6.4.3 工作方式 115
6.5 使用Twitter進行身份驗證 115
6.5.1 準備工作 116
6.5.2 實現方式 116
6.5.3 工作方式 118
6.6 基於LDAP的身份驗證機制 118
6.6.1 準備工作 118
6.6.2 實現方式 119
6.6.3 工作方式 122
6.6.4 另請參閱 123
第7章 構建RESTful API
7.1 創建基於類的REST接口 126
7.1.1 準備工作 126
7.1.2 實現方式 126
7.1.3 工作方式 127
7.2 創建基於擴展的REST接口 127
7.2.1 準備工作 128
7.2.2 實現方式 128
7.2.3 工作方式 129
7.2.4 另請參閱 129
7.3 創建完整的RESTful API 130
7.3.1 準備工作 130
7.3.2 實現方式 130
7.3.3 工作方式 132
第8章 Flask應用程式管理接口
8.1 創建簡單的CRUD接口 135
8.1.1 準備工作 136
8.1.2 實現方式 136
8.1.3 工作方式 139
8.2 使用Flask-Admin擴展 141
8.2.1 準備工作 141
8.2.2 實現方式 141
8.2.3 工作方式 142
8.2.4 更多內容 142
8.3 利用Flask-Admin註冊模型 143
8.3.1 準備工作 143
8.3.2 實現方式 143
8.3.3 工作方式 145
8.4 創建自定義表單和操作 146
8.4.1 準備工作 146
8.4.2 實現方式 146
8.4.3 工作方式 148
8.5 使用WYSIWYG(所見即所得)編輯器 148
8.5.1 準備工作 149
8.5.2 實現方式 149
8.5.3 工作方式 150
8.5.4 另請參閱 151
8.6 創建用戶角色 151
8.6.1 準備工作 151
8.6.2 實現方式 152
8.6.3 工作方式 154
第9章 國際化和本地化
9.1 添加一種新語言 155
9.1.1 準備工作 155
9.1.2 實現方式 156
9.1.3 工作方式 158
9.1.4 更多內容 159
9.1.5 另請參閱 159
9.2 實現延遲處理和gettext/ngettext函式 159
9.2.1 準備工作 160
9.2.2 實現方式 160
9.3 實現全球語言切換操作 161
9.3.1 準備工作 161
9.3.2 實現方式 162
9.3.3 工作方式 163
9.3.4 另請參閱 163
第10章 調試、錯誤處理和測試
10.1 設定基本的檔案日誌系統 166
10.1.1 準備工作 166
10.1.2 實現方式 166
10.1.3 工作方式 167
10.1.4 更多內容 168
10.1.5 另請參閱 168
10.2 在出現錯誤時傳送電子郵件 168
10.2.1 準備工作 169
10.2.2 工作方式 169
10.2.3 工作方式 170
10.2.4 更多內容 170
10.3 使用Sentry監視異常 170
10.3.1 準備工作 170
10.3.2 實現方式 170
10.3.3 工作方式 172
10.4 基於pdb的調試機制 172
10.4.1 準備工作 172
10.4.2 實現方式 173
10.4.3 工作方式 173
10.4.4 另請參閱 173
10.5 創建簡單的測試 174
10.5.1 準備工作 174
10.5.2 實現方式 174
10.5.3 工作方式 175
10.5.4 另請參閱 175
10.6 針對視圖和邏輯編寫多項測試 176
10.6.1 準備工作 176
10.6.2 實現方式 176
10.6.3 工作方式 179
10.7 nose庫集成 179
10.7.1 準備工作 180
10.7.2 實現方式 180
10.7.3 另請參閱 180
10.8 使用Mocking避免訪問API 181
10.8.1 準備工作 181
10.8.2 實現方式 182
10.8.3 工作方式 184
10.8.4 另請參閱 184
10.9 確定測試覆蓋率 184
10.9.1 準備工作 184
10.9.2 實現方式 185
10.9.3 工作方式 186
10.9.4 另請參閱 187
10.10 使用性能分析查找瓶頸 187
10.10.1 準備工作 187
10.10.2 實現方式 187
10.10.3 工作方式 187
第11章 部署和後期部署
11.1 基於Apache的部署機制 189
11.1.1 準備工作 190
11.1.2 實現方式 191
11.1.3 工作方式 192
11.1.4 更多內容 192
11.1.5 另請參閱 193
11.2 基於uWSGI和Nginx的部署機制 193
11.2.1 準備工作 193
11.2.2 實現方式 193
11.2.3 另請參閱 195
11.3 基於Gunicorn和Supervisor的部署機制 195
11.3.1 準備工作 196
11.3.2 實現方式 196
11.3.3 工作方式 197
11.3.4 另請參閱 197
11.4 基於Tornado的部署 198
11.4.1 準備工作 198
11.4.2 實現方式 198
11.4.3 工作方式 199
11.5 針對檔案上傳使用S3存儲 199
11.5.1 準備工作 199
11.5.2 實現方式 199
11.5.3 工作方式 201
11.5.4 另請參閱 201
11.6 基於Heroku的部署 201
11.6.1 準備工作 201
11.6.2 實現方式 202
11.6.3 準備工作 204
11.6.4 更多內容 204
11.7 基於AWS Elastic Beanstalk的部署機制 204
11.7.1 準備工作 204
11.7.2 實現方式 205
11.7.3 工作方式 206
11.8 利用New Relic管理和監控應用程式 208
11.8.1 準備工作 208
11.8.2 實現方式 209
11.8.3 工作方式 210
11.8.4 另請參閱 210
第12中 微服務和容器
12.1 基於Docker的容器化機制 211
12.1.1 準備工作 212
12.1.2 實現方式 213
12.1.3 工作方式 215
12.1.4 另請參閱 215
12.2 基於Kubernetes的編排容器 216
12.2.1 準備工作 216
12.2.2 實現方式 216
12.2.3 工作方式 218
12.2.4 更多內容 219
12.2.5 另請參閱 220
12.3 AWS Lambda上基於Zappa的無伺服器操作 220
12.3.1 準備工作 220
12.3.2 實現方式 220
12.3.3 工作方式 223
12.3.4 另請參閱 224
第13章 提示和技巧
13.1 實現基於Whoosh的全文本搜尋 225
13.1.1 準備工作 226
13.1.2 實現方式 226
13.1.3 工作方式 227
13.1.4 另請參閱 227
13.2 實現基於Elasticsearch的全文本搜尋 227
13.2.1 準備工作 228
13.2.2 實現方式 228
13.2.3 工作方式 230
13.3 與信號協同工作 230
13.3.1 準備工作 230
13.3.2 實現方式 231
13.3.3 工作方式 232
13.3.4 另請參閱 232
13.4 在應用程式中使用快取 232
13.4.1 準備工作 233
13.4.2 實現方式 233
13.4.3 工作方式 233
13.4.4 更多內容 234
13.4.5 另請參閱 234
13.5 實現Flask應用程式的電子郵件支持 234
13.5.1 準備工作 235
13.5.2 實現方式 235
13.5.3 工作方式 235
13.5.4 更多內容 236
13.5.5 另請參閱 237
13.6 了解異步操作 237
13.6.1 準備工作 237
13.6.2 實現方式 237
13.6.3 工作方式 238
13.7 與Celery協同工作 238
13.7.1 準備工作 238
13.7.2 實現方式 238