內容簡介
本書共分三部分,全面介紹如何基於Python微框架Flask進行Web開發。第一部分是Flask簡介,介紹使用Flask框架及擴展開發Web程式的基礎知識。第二部分則給出一個實例,真正帶領大家一步步開發完整的部落格和社交套用Flasky,從而將前述知識融會貫通,付諸實踐。第三部分介紹了發布套用之前必須考慮的事項,如單元測試策略、性能分析技術、Flask程式的部署方式等。第2版針對Python 3.6全面修訂。
圖書目錄
前言 xi
第 一部分 Flask簡介
第 1章 安裝 3
1.1 創建套用 4
1.2 虛擬環境 4
1.3 在Python 3中創建虛擬環境 4
1.4 在Python 2中創建虛擬環境 5
1.5 使用虛擬環境 5
1.6 使用pip安裝Python包 6
第 2章 套用的基本結構 7
2.1 初始化 7
2.2 路由和視圖函式 7
2.3 一個完整的套用 9
2.4 Web開發伺服器 9
2.5 動態路由 10
2.6 調試模式 11
2.7 命令行選項 13
2.8 請求–回響循環 14
2.8.1 套用和請求上下文 14
2.8.2 請求分派 16
2.8.3 請求對象 16
2.8.4 請求鉤子 17
2.8.5 回響 18
2.9 Flask擴展 19
第3章 模板 20
3.1 Jinja2模板引擎 20
3.1.1 渲染模板 21
3.1.2 變數 21
3.1.3 控制結構 22
3.2 使用Flask-Bootstrap集成Bootstrap 24
3.3 自定義錯誤頁面 27
3.4 連結 29
3.5 靜態檔案 30
3.6 使用Flask-Moment本地化日期和時間 31
第4章 Web表單 34
4.1 配置 34
4.2 表單類 35
4.3 把表單渲染成HTML 37
4.4 在視圖函式中處理表單 38
4.5 重定向和用戶會話 40
4.6 閃現訊息 42
第5章 資料庫 44
5.1 SQL資料庫 44
5.2 NoSQL資料庫 45
5.3 使用SQL還是NoSQL 46
5.4 Python資料庫框架 46
5.5 使用Flask-SQLAlchemy管理資料庫 47
5.6 定義模型 48
5.7 關係 49
5.8 資料庫操作 51
5.8.1 創建表 51
5.8.2 插入行 51
5.8.3 修改行 53
5.8.4 刪除行 53
5.8.5 查詢行 53
5.9 在視圖函式中運算元據庫 55
5.10 集成Python shell 56
5.11 使用Flask-Migrate實現資料庫遷移 56
5.11.1 創建遷移倉庫 57
5.11.2 創建遷移腳本 57
5.11.3 更新資料庫 58
5.11.4 添加幾個遷移 59
第6章 電子郵件 60
第7章 大型套用的結構 65
7.1 項目結構 65
7.2 配置選項 66
7.3 套用包 67
7.3.1 使用套用工廠函式 68
7.3.2 在藍本中實現套用功能 69
7.4 套用腳本 71
7.5 需求檔案 71
7.6 單元測試 72
7.7 創建資料庫 74
7.8 運行套用 74
第二部分 實例:社交部落格套用
第8章 用戶身份驗證 77
8.1 Flask的身份驗證擴展 77
8.2 密碼安全性 77
8.3 創建身份驗證藍本 80
8.4 使用Flask-Login驗證用戶身份 81
8.4.1 準備用於登錄的用戶模型 82
8.4.2 保護路由 83
8.4.3 添加登錄表單 83
8.4.4 登入用戶 85
8.4.5 登出用戶 86
8.4.6 理解Flask-Login的運作方式 86
8.4.7 登錄測試 87
8.5 註冊新用戶 88
8.5.1 添加用戶註冊表單 88
8.5.2 註冊新用戶 90
8.6 確認賬戶 90
8.6.1 使用itsdangerous生成確認令牌 90
8.6.2 傳送確認郵件 92
8.7 管理賬戶 95
第9章 用戶角色 97
9.1 角色在資料庫中的表示 97
9.2 賦予角色 100
9.3 檢驗角色 101
第 10章 用戶資料 104
10.1 資料信息 104
10.2 用戶資料頁面 105
10.3 資料編輯器 107
10.3.1 用戶級資料編輯器 107
10.3.2 管理員級資料編輯器 109
10.4 用戶頭像 111
第 11章 部落格文章 115
11.1 提交和顯示部落格文章 115
11.2 在資料頁中顯示部落格文章 118
11.3 分頁顯示長部落格文章列表 118
11.3.1 創建虛擬部落格文章數據 119
11.3.2 在頁面中渲染數據 120
11.3.3 添加分頁導航 121
11.4 使用Markdown和Flask-PageDown支持富文本文章 123
11.4.1 使用Flask-PageDown 124
11.4.2 在伺服器端處理富文本 125
11.5 部落格文章的固定連結 126
11.6 部落格文章編輯器 128
第 12章 關注者 130
12.1 再論資料庫關係 130
12.1.1 多對多關係 130
12.1.2 自引用關係 132
12.1.3 高級多對多關係 132
12.2 在資料頁面中顯示關注者 135
12.3 使用資料庫聯結查詢所關注用戶的文章 137
12.4 在首頁顯示所關注用戶的文章 139
第 13章 用戶評論 143
13.1 評論在資料庫中的表示 143
13.2 提交和顯示評論 144
13.3 管理評論 146
第 14章 套用編程接口 150
14.1 REST簡介 150
14.1.1 資源就是一切 151
14.1.2 請求方法 151
14.1.3 請求和回響主體 152
14.1.4 版本 153
14.2 使用Flask實現REST式Web服務 153
14.2.1 創建API藍本 153
14.2.2 錯誤處理 154
14.2.3 使用Flask-HTTPAuth驗證用戶身份 156
14.2.4 基於令牌的身份驗證 158
14.2.5 資源和JSON的序列化轉換 159
14.2.6 實現資源的各個端點 161
14.2.7 分頁大型資源集合 163
14.2.8 使用HTTPie測試Web服務 164
第三部分 成功在望
第 15章 測試 169
15.1 獲取代碼覆蓋度報告 169
15.2 Flask測試客戶端 172
15.2.1 測試Web套用 172
15.2.2 測試Web服務 175
15.3 使用Selenium進行端到端測試 176
15.4 值得測試嗎 180
第 16章 性能 181
16.1 在日誌中記錄影響性能的緩慢資料庫查詢 181
16.2 分析源碼 183
第 17章 部署 184
17.1 部署流程 184
17.2 把生產環境中的錯誤寫入日誌 185
17.3 雲部署 186
17.4 Heroku平台 186
17.4.1 準備工作 187
17.4.2 使用heroku local測試 193
17.4.3 執行git push命令部署 194
17.4.4 升級後重新部署 195
17.5 Docker容器 195
17.5.1 安裝Docker 195
17.5.2 構建容器映像 196
17.5.3 運行容器 199
17.5.4 審查運行中的容器 200
17.5.5 把容器映像推送到外部註冊處 200
17.5.6 使用外部資料庫 201
17.5.7 使用Docker Compose編排容器 202
17.5.8 清理舊容器和映像 205
17.5.9 在生產環境中使用Docker 205
17.6 傳統部署方式 206
17.6.1 架設伺服器 206
17.6.2 導入環境變數 207
17.6.3 配置日誌 207
第 18章 其他資源 209
18.1 使用集成開發環境 209
18.2 尋找Flask擴展 209
18.3 尋求幫助 210
18.4 參與Flask社區 210
作者簡介 211
關於封面 211