第1章 配置Flask 1
1.1 利用virtualenv設置開發(fā)環(huán)境 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 組織靜態(tài)文件 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創(chuàng)建模塊化的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的模板機制 19
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 創(chuàng)建自定義上下文處理器 28
2.4 創(chuàng)建自定義Jinja2過濾器 29
2.4.1 實現方式 29
2.4.2 工作方式 30
2.4.3 另請參閱 31
2.5 為表單創(chuàng)建自定義宏 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中的數據模型 35
3.1 創(chuàng)建SQLAlchemy DB實例 35
3.1.1 準備工作 36
3.1.2 實現方式 36
3.1.3 更多內容 37
3.1.4 另請參閱 38
3.2 創(chuàng)建基本的產品模型 38
3.2.1 實現方式 38
3.2.2 工作方式 41
3.2.3 另請參閱 41
3.3 創(chuàng)建關系分類模型 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章 與視圖協(xié)同工作 53
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 創(chuàng)建自定義的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 77
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 創(chuàng)建公共表單集合 83
5.3.1 實現方式 84
5.3.2 工作方式 85
5.4 創(chuàng)建自定義字段和驗證 86
5.4.1 實現方式 86
5.4.2 工作方式 87
5.4.3 更多內容 87
5.5 創(chuàng)建自定義微件 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中的身份驗證機制 97
6.1 創(chuàng)建簡單的基于會話的身份驗證 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 125
7.1 創(chuàng)建基于類的REST接口 126
7.1.1 準備工作 126
7.1.2 實現方式 126
7.1.3 工作方式 127
7.2 創(chuàng)建基于擴展的REST接口 127
7.2.1 準備工作 128
7.2.2 實現方式 128
7.2.3 工作方式 129
7.2.4 另請參閱 129
7.3 創(chuàng)建完整的RESTful API 130
7.3.1 準備工作 130
7.3.2 實現方式 130
7.3.3 工作方式 132
第8章 Flask應用程序管理接口 135
8.1 創(chuàng)建簡單的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 創(chuàng)建自定義表單和操作 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 創(chuàng)建用戶角色 151
8.6.1 準備工作 151
8.6.2 實現方式 152
8.6.3 工作方式 154
第9章 國際化和本地化 155
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章 調試、錯誤處理和測試 165
10.1 設置基本的文件日志系統(tǒng) 166
10.1.1 準備工作 166
10.1.2 實現方式 166
10.1.3 工作方式 167
10.1.4 更多內容 168
10.1.5 另請參閱 168
10.2 在出現錯誤時發(fā)送電子郵件 168
10.2.1 準備工作 169
10.2.2 工作方式 169
10.2.3 工作方式 170
10.2.4 更多內容 170
10.3 使用Sentry監(jiān)視異常 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 創(chuàng)建簡單的測試 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章 部署和后期部署 189
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管理和監(jiān)控應用程序 208
11.8.1 準備工作 208
11.8.2 實現方式 209
11.8.3 工作方式 210
11.8.4 另請參閱 210
第12中 微服務和容器 211
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章 提示和技巧 225
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 與信號協(xié)同工作 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協(xié)同工作 238
13.7.1 準備工作 238
13.7.2 實現方式 238
13.7.3 工作方式 240
13.7.4 另請參閱 240