內容簡介
本書來自真正的開發現場,是BePROUD公司眾多極客在真實項目中的經驗總結和智慧結晶。作者從Python的環境搭建開始講起,介紹了Web套用的開發方法、項目管理及審查、測試與高效部署、伺服器調試等內習和乃協祝套套容,儘可能網羅了Python項目開發流程中的方方面面,有助於開發 者建立有序生產環境,提高開發效率,讓編程事半功倍。此外,在本書中Python僅僅是一個載體,很多知識點在非Python下也適用。
圖書目錄
第 1部分 Python開發入門 1
第 1章 Python入門 2
1.1 安裝Python 2
1.1.1 安裝deb包 3
1.1.2 安裝第三方包 4
1.1.3 virtualenv的使用方法 夜汗台多閥灑墓5
1.1.4 多版本Python的使用 7
1.2 安裝Mercurial 9
1.2.1 Mercurial概述 10
1.2.2 安裝Mercurial 10
1.2.3 創建版本庫 11
1.2.4 檔案操作 12
1.3 編輯器與輔助開發工具 14
1.3.1 編輯器 14
1.3.2 開發輔助工具 20
1.4 小結 22
第 2章 開愉永禁發Web套用 24
2.1 了解Web套用 24
2.1.1 Web套用是什麼 24
2.1.2 Web套用與桌面套用的區別 25
2.1.3 Web套用的機制 25
2.2 前置準備 28
2.2.1 關於Flask 28
2.2.2 安裝Flask 28
2.3 Web套用的開發流程 29
2.4 明確要開發什麼套用 30
2.4.1 留言板套用的需求 30
2.4.2 明確必 備的功能 30
2.4.3 明確必 備的頁面 31
2.5 頁面設計 31
2.5.1 確定成品頁面的形式 31
2.5.2 抹堡編寫HTML和CSS 32
2.6 實現功能 37
2.6.1 保存留言數據 37
2.6.2 獲取已保存的留言列表 38
2.6.3 用模板引擎顯示頁面 39
2.6.4 準備評論接收方的URL 42
2.6.5 調整模板的輸出 43
2.7 查看運行情況 45
2.8 小結 47
第3章 Python項目的結構與包的創建 48
3.1 Python項目 48
3.2 環境與工具 49
3.2.1 用virtualenv搭建獨立環境 49
3.2.2 用pip安裝程式包 55
3.2.3 小結 62
3.3 檔案結構與發布程式包 62
3.3.1 編寫setup.py 62
3.3.2 留言板的項目結構 64
3.3.3 setup.py與MANIFEST.in——設定程式包信息與捆綁的檔案 65
3.3.4 setup.py——創建執行命令 69
3.3.5 python setup.py sdist——創建源碼發布程式包 71
3.3.6 提交到版本庫 71
3.3.7 README.rst——開發環境設定流程 73
3.3.8 變更依賴包 75
3.3.9 通過requirements.txt固定開發版本 77
3.3.10 python setup.py bdist_wheel——製作用於wheel發布的程式包 78
3.3.11 上傳到PyPI並公開 79
3.3.12 小結 85
3.4 小結 86
第 2部分 團隊開發的周期 87
第4章 面向團隊開發的工具 88
4.1 問題跟蹤系統 88
4.1.1 Redmine 88
4.1.2 安裝Redmine 89
4.1.3 Redmine的設定 91
4.1.4 外掛程式 93
4.2 版本控制系統 94
4.2.1 Mercurial與Redmine的聯動 94
4.2.2 用於生成版本庫的外掛程式 95
4.3 聊天系統 97
4.3.1 Slack 97
4.3.2 Slack的特點 98
4.3.3 習催達Slack做不到的事 101
4.3.4 Slack的註冊 102
4.4 對團隊開發有幫助的工具 102
4.4.1 Dropbox 102
4.4.2 Google Drive 102
4.5 小結 103
第5章 項目管理與審查 104
5.1 項目管理與問題的區分使用 104
5.1.1 項目管理的前置準備工作 104
5.1.2 創建問題 105
5.1.3 整理問題 107
5.1.4 分割問題 107
5.2 問題模板 108
5.2.1 安裝外掛程式 108
5.2.2 問題模板的使用方法 109
5.2.3 Global Issue Templates 111
5.2.4 問題模板示例 112
5.3 問題驅動開發 114
5.3.1 別急著敲代碼,先建問題 114
5.3.2 創建與問題編號同名的分支 115
5.3.3 讓發布與分支相對應 115
5.3.4 分支的合併 116
5.4 審查 117
5.4.1 為什麼需要審查 117
5.4.2 審查委託:代碼審查篇 118
5.4.3 審查委託:作業審查篇 119
5.4.4 實施審查:代碼審查篇 120
5.4.5 實施審查:作業審查篇 123
5.5 小結 123
第6章 用Mercurial管理源碼 125
6.1 Mercurial版本庫的管理與設定 125
6.1.1 伺服器上的Uinx用戶群設定 125
6.1.2 創建版本庫 126
6.1.3 hgrc的設定 127
6.1.4 使用設定好的版本庫 127
6.1.5 使用hgweb建立簡易中央版本庫 127
6.2 靈活使用“鉤子” 128
6.2.1 鉤子功能的設定方法 129
6.2.2 嘗試鉤子腳本 129
6.2.3 鉤子事件 130
6.2.4 鉤子功能的執行時機 131
6.2.5 編寫鉤子腳本 134
6.3 分支的操作 136
6.4 關於合併 137
6.4.1 未發生衝突的合併 138
6.4.2 合併時發生衝突以及用文本編輯器解決衝突的方法 140
6.4.3 合併的類型與衝突 143
6.4.4 用GUI的合併工具進行合併 144
6.5 GUI客戶端 147
6.5.1 GUI客戶端的介紹 147
6.5.2 GUI客戶端的優點 149
6.5.3 GUI客戶端的缺點 151
6.6 考慮實際運用的BePROUD Mercurial Workflow 152
6.6.1 概述 152
6.6.2 背景 152
6.6.3 版本庫的結構 153
6.6.4 提交源碼 154
6.6.5 提交設計 156
6.6.6 分支的合併 157
6.6.7 集成分支 158
6.7 小結 160
第7章 完備文檔的基礎 162
7.1 要記得給項目寫文檔 162
7.1.1 寫文檔時不想做的事 162
7.1.2 什麼樣的狀態讓人想寫文檔 164
7.2 Sphinx的基礎與安裝 165
7.2.1 Sphinx的安裝 166
7.2.2 reStructuredText入門 167
7.2.3 用Sphinx寫結構化文檔的流程 169
7.2.4 Sphinx擴展 174
7.3 導入Sphinx可解決的問題與新出現的問題 175
7.3.1 由於是純文本,所以能在平時用的編輯器上寫文檔 176
7.3.2 信息與視圖相分離,所以能集中精神編輯內容,不用顧慮裝飾等外觀問題 176
7.3.3 可根據一個源碼輸出PDF等多種格式 179
7.3.4 通過結構化,文檔可分成幾個檔案來寫 180
7.3.5 能用Mercurial等輕鬆實現版本管理 181
7.3.6 API參考手冊與程式的管理一體化 182
7.3.7 通過Web瀏覽器共享 184
7.3.8 導入Sphinx後仍存在的問題 185
7.4 文檔集的創建與使用 186
7.4.1 什麼是文檔集 186
7.4.2 項目所需文檔的一覽表 187
7.4.3 面向項目組長、經理 187
7.4.4 面向設計者 189
7.4.5 面向開發 者 189
7.4.6 面向客戶 189
7.5 小結 190
第8章 模組分割設計與單元測試 191
8.1 模組分割設計 191
8.1.1 功能設計 191
8.1.2 構成Web套用的組件 192
8.1.3 組件設計 194
8.1.4 模組與程式包 195
8.2 測試 197
8.2.1 測試的種類 197
8.2.2 編寫單元測試 198
8.2.3 從單元測試中剔除環境依賴 209
8.2.4 用WebTest做功能測試 215
8.3 通過測試改良設計 219
8.4 推進測試自動化 221
8.4.1 用tox自動生成執行測試的環境 221
8.4.2 可重複使用的測試環境 223
8.5 小結 223
第9章 Python封裝及其運用 224
9.1 使用程式包 224
9.1.1 程式包的版本指定 224
9.1.2 從非PyPI伺服器安裝程式包 226
9.1.3 程式包的發布格式 228
9.1.4 生成wheelhouse的方法 230
9.1.5 從wheelhouse安裝 231
9.2 巧用程式包 232
9.2.1 私密發布 232
9.2.2 巧用requirements.txt 232
9.2.3 requirements.txt層級化 233
9.2.4 為部署和CI+tox準備的requiremests 234
9.2.5 通過requirements.txt指定庫的版本 235
9.3 小結 236
第 10章 用Jenkins持續集成 237
10.1 什麼是持續集成 237
10.1.1 持續集成的簡介 237
10.1.2 Jenkins簡介 239
10.2 Jenkins的安裝 239
10.2.1 安裝Jenkins主體程式 239
10.2.2 本章將用到的Jenkins外掛程式 240
10.3 執行測試代碼 241
10.3.1 讓Jenkins運行簡單的測試代碼 241
10.3.2 添加Job 242
10.3.3 Job的成功與失敗 244
10.4 測試結果輸出到報告 246
10.4.1 安裝pytest 246
10.4.2 調用pytest命令 246
10.4.3 根據pytest更改Jenkins的設定 246
10.5 顯示覆蓋率報告 247
10.5.1 安裝pytest-cov 248
10.5.2 從pytest獲取覆蓋率 248
10.5.3 讀取覆蓋率報告 248
10.6 執行Django的測試 250
10.6.1 安裝Python模組 250
10.6.2 Django的調整 251
10.6.3 示例代碼 251
10.6.4 Jenkins的調整 255
10.6.5 “構建後操作”選項卡的設定 257
10.7 通過Jenkins構建文檔 260
10.7.1 安裝Sphinx 261
10.7.2 在Jenkins添加Job 261
10.7.3 Sphinx構建發出警告時令Job失敗 261
10.7.4 查看成果 262
10.7.5 通過Task Scanner Plugin管理TODO 263
10.7.6 Task Scanner Plugin的設定示例 264
10.8 Jenkins進階技巧 265
10.8.1 好用的功能 265
10.8.2 進一步改善 267
10.9 小結 268
第3部分 服務公開 269
第 11章 環境搭建與部署的自動化 270
11.1 確定所需環境的內容 270
11.1.1 網路結構 270
11.1.2 伺服器搭建內容的結構化 272
11.1.3 用戶的設定 273
11.1.4 選定程式包 274
11.1.5 中間件的設定 277
11.1.6 部署 280
11.2 用Ansible實現自動化作業 282
11.2.1 Ansible簡介 282
11.2.2 檔案結構 287
11.2.3 執行Ansible 288
11.2.4 與**初確定的結構相對應 288
11.2.5 將各步驟Ansible化 289
11.2.6 整理Ansible的執行環境 295
11.3 小結 296
第 12章 套用的性能改善 298
12.1 Web套用的性能 298
12.1.1 Web套用面對大量集中請求時會產生哪些問題 298
12.1.2 針對高負荷的對策 299
12.2 評估留言板套用的性能 300
12.2.1 什麼是套用的性能 300
12.2.2 安裝ApacheBench 300
12.2.3 用ApachBench評估性能 301
12.3 gunicorn簡介 303
12.3.1 安裝gunicorn 304
12.3.2 在gunicorn上運行套用 304
12.4 nginx簡介 306
12.4.1 安裝nginx 306
12.4.2 檢測nginx的性能 307
12.5 在nginx和gunicorn上運行套用 310
12.5.1 gunicorn的設定 310
12.5.2 nginx的設定 310
12.5.3 評估nginx+gunicorn的性能 311
12.5.4 性能比較 312
12.6 小結 313
第4部分 加速開發的技巧 315
第 13章 讓測試為我們服務 316
13.1 認識現狀:測試的客觀環境 316
13.2 將測試導入開發各個階段 317
13.2.1 文檔的測試(審查) 317
13.2.2 測試設計的編寫方法(輸入與輸出) 320
13.2.3 測試的實施與測試階段的輪換(做什麼,做多少) 323
13.3 小結:測試並不可怕 326
第 14章 輕鬆使用Django 327
14.1 Django簡介 327
14.1.1 Django的安裝 327
14.1.2 Django的架構 327
14.1.3 Django的文檔 331
14.2 資料庫的遷移 331
14.2.1 什麼是資料庫的遷移 331
14.2.2 Django的遷移功能 332
14.3 fixture replacement 339
14.3.1 什麼是測試配置器 339
14.3.2 幾種不便使用默認配置器的情況 342
14.3.3 如何使用factory_boy 343
14.3.4 消除“不便使用默認配置器的情況” 345
14.4 Django Debug Toolbar 346
14.5 小結 353
第 15章 方便好用的Python模組 355
15.1 輕鬆計算日期 355
15.1.1 日期計算的複雜性 355
15.1.2 導入dateutil 357
15.2 簡化模型的映射 359
15.2.1 模型映射的必要性 359
15.2.2 映射規則的結構化與重複利用 360
15.2.3 導入bpmappers 363
15.2.4 與Django聯動 366
15.2.5 編寫JSON API 367
15.3 圖像處理 369
15.3.1 安裝Pillow 369
15.3.2 圖像格式轉換 371
15.3.3 改變圖像尺寸 372
15.3.4 剪裁圖像 374
15.3.5 對圖像進行濾鏡處理 375
15.4 數據加密 377
15.4.1 安裝PyCrypto 377
15.4.2 通用加密系統的加密及解密 377
15.5 使用Twitter的API 382
15.5.1 導入tweepy 382
15.5.2 添加套用與獲取用戶密鑰 382
15.5.3 獲取訪問令牌 385
15.5.4 調用Twitter API 385
15.5.5 編寫用Twitter認證的系統 387
15.6 使用REST API 393
15.6.1 REST簡介 394
15.6.2 導入Requests 394
15.6.3 導入測試伺服器 394
15.6.4 傳送GET請求 396
15.6.5 傳送POST請求 397
15.6.6 傳送JSON格式的POST請求 398
15.6.7 使用GET/POST之外的HTTP方法 399
15.7 小結 400
附錄 401
附錄A VirtualBox的設定 402
A.1 安裝VirtualBox 402
A.2 新建虛擬機 403
A.3 備份虛擬機 404
附錄B OS(Ubuntu)的設定 407
B.1 安裝Ubuntu 407
B.2 SSH的設定 417
B.3 中文的設定 419
B.4 添加用戶 419
3.3.4 setup.py——創建執行命令 69
3.3.5 python setup.py sdist——創建源碼發布程式包 71
3.3.6 提交到版本庫 71
3.3.7 README.rst——開發環境設定流程 73
3.3.8 變更依賴包 75
3.3.9 通過requirements.txt固定開發版本 77
3.3.10 python setup.py bdist_wheel——製作用於wheel發布的程式包 78
3.3.11 上傳到PyPI並公開 79
3.3.12 小結 85
3.4 小結 86
第 2部分 團隊開發的周期 87
第4章 面向團隊開發的工具 88
4.1 問題跟蹤系統 88
4.1.1 Redmine 88
4.1.2 安裝Redmine 89
4.1.3 Redmine的設定 91
4.1.4 外掛程式 93
4.2 版本控制系統 94
4.2.1 Mercurial與Redmine的聯動 94
4.2.2 用於生成版本庫的外掛程式 95
4.3 聊天系統 97
4.3.1 Slack 97
4.3.2 Slack的特點 98
4.3.3 Slack做不到的事 101
4.3.4 Slack的註冊 102
4.4 對團隊開發有幫助的工具 102
4.4.1 Dropbox 102
4.4.2 Google Drive 102
4.5 小結 103
第5章 項目管理與審查 104
5.1 項目管理與問題的區分使用 104
5.1.1 項目管理的前置準備工作 104
5.1.2 創建問題 105
5.1.3 整理問題 107
5.1.4 分割問題 107
5.2 問題模板 108
5.2.1 安裝外掛程式 108
5.2.2 問題模板的使用方法 109
5.2.3 Global Issue Templates 111
5.2.4 問題模板示例 112
5.3 問題驅動開發 114
5.3.1 別急著敲代碼,先建問題 114
5.3.2 創建與問題編號同名的分支 115
5.3.3 讓發布與分支相對應 115
5.3.4 分支的合併 116
5.4 審查 117
5.4.1 為什麼需要審查 117
5.4.2 審查委託:代碼審查篇 118
5.4.3 審查委託:作業審查篇 119
5.4.4 實施審查:代碼審查篇 120
5.4.5 實施審查:作業審查篇 123
5.5 小結 123
第6章 用Mercurial管理源碼 125
6.1 Mercurial版本庫的管理與設定 125
6.1.1 伺服器上的Uinx用戶群設定 125
6.1.2 創建版本庫 126
6.1.3 hgrc的設定 127
6.1.4 使用設定好的版本庫 127
6.1.5 使用hgweb建立簡易中央版本庫 127
6.2 靈活使用“鉤子” 128
6.2.1 鉤子功能的設定方法 129
6.2.2 嘗試鉤子腳本 129
6.2.3 鉤子事件 130
6.2.4 鉤子功能的執行時機 131
6.2.5 編寫鉤子腳本 134
6.3 分支的操作 136
6.4 關於合併 137
6.4.1 未發生衝突的合併 138
6.4.2 合併時發生衝突以及用文本編輯器解決衝突的方法 140
6.4.3 合併的類型與衝突 143
6.4.4 用GUI的合併工具進行合併 144
6.5 GUI客戶端 147
6.5.1 GUI客戶端的介紹 147
6.5.2 GUI客戶端的優點 149
6.5.3 GUI客戶端的缺點 151
6.6 考慮實際運用的BePROUD Mercurial Workflow 152
6.6.1 概述 152
6.6.2 背景 152
6.6.3 版本庫的結構 153
6.6.4 提交源碼 154
6.6.5 提交設計 156
6.6.6 分支的合併 157
6.6.7 集成分支 158
6.7 小結 160
第7章 完備文檔的基礎 162
7.1 要記得給項目寫文檔 162
7.1.1 寫文檔時不想做的事 162
7.1.2 什麼樣的狀態讓人想寫文檔 164
7.2 Sphinx的基礎與安裝 165
7.2.1 Sphinx的安裝 166
7.2.2 reStructuredText入門 167
7.2.3 用Sphinx寫結構化文檔的流程 169
7.2.4 Sphinx擴展 174
7.3 導入Sphinx可解決的問題與新出現的問題 175
7.3.1 由於是純文本,所以能在平時用的編輯器上寫文檔 176
7.3.2 信息與視圖相分離,所以能集中精神編輯內容,不用顧慮裝飾等外觀問題 176
7.3.3 可根據一個源碼輸出PDF等多種格式 179
7.3.4 通過結構化,文檔可分成幾個檔案來寫 180
7.3.5 能用Mercurial等輕鬆實現版本管理 181
7.3.6 API參考手冊與程式的管理一體化 182
7.3.7 通過Web瀏覽器共享 184
7.3.8 導入Sphinx後仍存在的問題 185
7.4 文檔集的創建與使用 186
7.4.1 什麼是文檔集 186
7.4.2 項目所需文檔的一覽表 187
7.4.3 面向項目組長、經理 187
7.4.4 面向設計者 189
7.4.5 面向開發 者 189
7.4.6 面向客戶 189
7.5 小結 190
第8章 模組分割設計與單元測試 191
8.1 模組分割設計 191
8.1.1 功能設計 191
8.1.2 構成Web套用的組件 192
8.1.3 組件設計 194
8.1.4 模組與程式包 195
8.2 測試 197
8.2.1 測試的種類 197
8.2.2 編寫單元測試 198
8.2.3 從單元測試中剔除環境依賴 209
8.2.4 用WebTest做功能測試 215
8.3 通過測試改良設計 219
8.4 推進測試自動化 221
8.4.1 用tox自動生成執行測試的環境 221
8.4.2 可重複使用的測試環境 223
8.5 小結 223
第9章 Python封裝及其運用 224
9.1 使用程式包 224
9.1.1 程式包的版本指定 224
9.1.2 從非PyPI伺服器安裝程式包 226
9.1.3 程式包的發布格式 228
9.1.4 生成wheelhouse的方法 230
9.1.5 從wheelhouse安裝 231
9.2 巧用程式包 232
9.2.1 私密發布 232
9.2.2 巧用requirements.txt 232
9.2.3 requirements.txt層級化 233
9.2.4 為部署和CI+tox準備的requiremests 234
9.2.5 通過requirements.txt指定庫的版本 235
9.3 小結 236
第 10章 用Jenkins持續集成 237
10.1 什麼是持續集成 237
10.1.1 持續集成的簡介 237
10.1.2 Jenkins簡介 239
10.2 Jenkins的安裝 239
10.2.1 安裝Jenkins主體程式 239
10.2.2 本章將用到的Jenkins外掛程式 240
10.3 執行測試代碼 241
10.3.1 讓Jenkins運行簡單的測試代碼 241
10.3.2 添加Job 242
10.3.3 Job的成功與失敗 244
10.4 測試結果輸出到報告 246
10.4.1 安裝pytest 246
10.4.2 調用pytest命令 246
10.4.3 根據pytest更改Jenkins的設定 246
10.5 顯示覆蓋率報告 247
10.5.1 安裝pytest-cov 248
10.5.2 從pytest獲取覆蓋率 248
10.5.3 讀取覆蓋率報告 248
10.6 執行Django的測試 250
10.6.1 安裝Python模組 250
10.6.2 Django的調整 251
10.6.3 示例代碼 251
10.6.4 Jenkins的調整 255
10.6.5 “構建後操作”選項卡的設定 257
10.7 通過Jenkins構建文檔 260
10.7.1 安裝Sphinx 261
10.7.2 在Jenkins添加Job 261
10.7.3 Sphinx構建發出警告時令Job失敗 261
10.7.4 查看成果 262
10.7.5 通過Task Scanner Plugin管理TODO 263
10.7.6 Task Scanner Plugin的設定示例 264
10.8 Jenkins進階技巧 265
10.8.1 好用的功能 265
10.8.2 進一步改善 267
10.9 小結 268
第3部分 服務公開 269
第 11章 環境搭建與部署的自動化 270
11.1 確定所需環境的內容 270
11.1.1 網路結構 270
11.1.2 伺服器搭建內容的結構化 272
11.1.3 用戶的設定 273
11.1.4 選定程式包 274
11.1.5 中間件的設定 277
11.1.6 部署 280
11.2 用Ansible實現自動化作業 282
11.2.1 Ansible簡介 282
11.2.2 檔案結構 287
11.2.3 執行Ansible 288
11.2.4 與**初確定的結構相對應 288
11.2.5 將各步驟Ansible化 289
11.2.6 整理Ansible的執行環境 295
11.3 小結 296
第 12章 套用的性能改善 298
12.1 Web套用的性能 298
12.1.1 Web套用面對大量集中請求時會產生哪些問題 298
12.1.2 針對高負荷的對策 299
12.2 評估留言板套用的性能 300
12.2.1 什麼是套用的性能 300
12.2.2 安裝ApacheBench 300
12.2.3 用ApachBench評估性能 301
12.3 gunicorn簡介 303
12.3.1 安裝gunicorn 304
12.3.2 在gunicorn上運行套用 304
12.4 nginx簡介 306
12.4.1 安裝nginx 306
12.4.2 檢測nginx的性能 307
12.5 在nginx和gunicorn上運行套用 310
12.5.1 gunicorn的設定 310
12.5.2 nginx的設定 310
12.5.3 評估nginx+gunicorn的性能 311
12.5.4 性能比較 312
12.6 小結 313
第4部分 加速開發的技巧 315
第 13章 讓測試為我們服務 316
13.1 認識現狀:測試的客觀環境 316
13.2 將測試導入開發各個階段 317
13.2.1 文檔的測試(審查) 317
13.2.2 測試設計的編寫方法(輸入與輸出) 320
13.2.3 測試的實施與測試階段的輪換(做什麼,做多少) 323
13.3 小結:測試並不可怕 326
第 14章 輕鬆使用Django 327
14.1 Django簡介 327
14.1.1 Django的安裝 327
14.1.2 Django的架構 327
14.1.3 Django的文檔 331
14.2 資料庫的遷移 331
14.2.1 什麼是資料庫的遷移 331
14.2.2 Django的遷移功能 332
14.3 fixture replacement 339
14.3.1 什麼是測試配置器 339
14.3.2 幾種不便使用默認配置器的情況 342
14.3.3 如何使用factory_boy 343
14.3.4 消除“不便使用默認配置器的情況” 345
14.4 Django Debug Toolbar 346
14.5 小結 353
第 15章 方便好用的Python模組 355
15.1 輕鬆計算日期 355
15.1.1 日期計算的複雜性 355
15.1.2 導入dateutil 357
15.2 簡化模型的映射 359
15.2.1 模型映射的必要性 359
15.2.2 映射規則的結構化與重複利用 360
15.2.3 導入bpmappers 363
15.2.4 與Django聯動 366
15.2.5 編寫JSON API 367
15.3 圖像處理 369
15.3.1 安裝Pillow 369
15.3.2 圖像格式轉換 371
15.3.3 改變圖像尺寸 372
15.3.4 剪裁圖像 374
15.3.5 對圖像進行濾鏡處理 375
15.4 數據加密 377
15.4.1 安裝PyCrypto 377
15.4.2 通用加密系統的加密及解密 377
15.5 使用Twitter的API 382
15.5.1 導入tweepy 382
15.5.2 添加套用與獲取用戶密鑰 382
15.5.3 獲取訪問令牌 385
15.5.4 調用Twitter API 385
15.5.5 編寫用Twitter認證的系統 387
15.6 使用REST API 393
15.6.1 REST簡介 394
15.6.2 導入Requests 394
15.6.3 導入測試伺服器 394
15.6.4 傳送GET請求 396
15.6.5 傳送POST請求 397
15.6.6 傳送JSON格式的POST請求 398
15.6.7 使用GET/POST之外的HTTP方法 399
15.7 小結 400
附錄 401
附錄A VirtualBox的設定 402
A.1 安裝VirtualBox 402
A.2 新建虛擬機 403
A.3 備份虛擬機 404
附錄B OS(Ubuntu)的設定 407
B.1 安裝Ubuntu 407
B.2 SSH的設定 417
B.3 中文的設定 419
B.4 添加用戶 419