Flask Web開發(fā) 基于Python的Web應(yīng)用開發(fā)實(shí)戰(zhàn) 第2版
定 價(jià):69 元
叢書名:圖靈程序設(shè)計(jì)叢書
- 作者:[美]米格爾·格林貝格(Miguel Grinberg)
- 出版時(shí)間:2018/8/1
- ISBN:9787115489456
- 出 版 社:人民郵電出版社
- 中圖法分類:TP311.561
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書共分三部分,全面介紹如何基于Python微框架Flask進(jìn)行Web開發(fā)。*部分是Flask簡介,介紹使用Flask框架及擴(kuò)展開發(fā)Web程序的基礎(chǔ)知識(shí)。第二部分則給出一個(gè)實(shí)例,真正帶領(lǐng)大家一步步開發(fā)完整的博客和社交應(yīng)用Flasky,從而將前述知識(shí)融會(huì)貫通,付諸實(shí)踐。第三部分介紹了發(fā)布應(yīng)用之前必須考慮的事項(xiàng),如單元測試策略、性能分析技術(shù)、Flask程序的部署方式等。第2版針對Python 3.6全面修訂。
本書是學(xué)習(xí)Flask的實(shí)用參考。其中介紹的數(shù)據(jù)庫交互操作和不同的部署方式讓我受益匪淺。Jason Myers
很喜歡這種項(xiàng)目驅(qū)動(dòng)式的教材,每一步都十分清楚,從開發(fā)到測試再到部署的全過程都有講解。中文版讀者h(yuǎn)uron
給五星是因?yàn)楸緯膬?nèi)容太實(shí)用了,解決了Flask學(xué)習(xí)過程中的痛點(diǎn),是一本難得的精煉且干貨十足的技術(shù)書。中文版讀者4widget
作為Python Web開發(fā)的微框架,F(xiàn)lask獨(dú)樹一幟。它不會(huì)強(qiáng)迫開fa者遵循預(yù)置的開發(fā)規(guī)范,為開fa者提供了自由度和創(chuàng)意空間。
本書是Web開發(fā)入門經(jīng)典教材狗書新版,針對Python 3全面修訂。作者采用講解與實(shí)例相結(jié)合的方法,不僅介紹了Flask安裝、使用等基礎(chǔ)知識(shí)和Flask核心功能,還帶領(lǐng)讀者從頭開始一步步開發(fā)了社交博客應(yīng)用Flasky,涵蓋開發(fā)、測試到部署的Web開發(fā)全過程。
·學(xué)習(xí)Flask應(yīng)用的基本結(jié)構(gòu),編寫示例應(yīng)用。
·使用組件,包括模板、數(shù)據(jù)庫、Web表單和電子郵件支持。
·使用包和模塊構(gòu)建可伸縮的大型應(yīng)用。
·實(shí)現(xiàn)用戶身份認(rèn)證、用戶角色和用戶資料。
·在博客網(wǎng)站中重用模板、分頁顯示列表以及使用富文本。
·使用基于Flask的REST式API,在手機(jī)、平板電腦和其他第三方客戶端上實(shí)現(xiàn)可用功能。
·學(xué)習(xí)運(yùn)行單元測試以及提升性能。
·將Web應(yīng)用部署到生產(chǎn)服務(wù)器。
【作者簡介】
米格爾 格林貝格(Miguel Grinberg)
近30年開發(fā)經(jīng)驗(yàn)的軟件工程師,以撰寫Python項(xiàng)目開發(fā)的博客而廣為Python開fa者所熟知,經(jīng)常受邀在PyCon等大會(huì)上分享開發(fā)經(jīng)驗(yàn)。
【譯者簡介】
安道
專注于現(xiàn)代計(jì)算機(jī)技術(shù)的自由翻譯,譯有《流暢的Python》《Python網(wǎng)絡(luò)編程攻略》《Ruby on Rails教程》等書。
前言 xi
第 一部分 Flask簡介
第 1章 安裝 3
1.1 創(chuàng)建應(yīng)用目錄 4
1.2 虛擬環(huán)境 4
1.3 在Python 3中創(chuàng)建虛擬環(huán)境 4
1.4 在Python 2中創(chuàng)建虛擬環(huán)境 5
1.5 使用虛擬環(huán)境 5
1.6 使用pip安裝Python包 6
第 2章 應(yīng)用的基本結(jié)構(gòu) 7
2.1 初始化 7
2.2 路由和視圖函數(shù) 7
2.3 一個(gè)完整的應(yīng)用 9
2.4 Web開發(fā)服務(wù)器 9
2.5 動(dòng)態(tài)路由 10
2.6 調(diào)試模式 11
2.7 命令行選項(xiàng) 13
2.8 請求?C響應(yīng)循環(huán) 14
2.8.1 應(yīng)用和請求上下文 14
2.8.2 請求分派 16
2.8.3 請求對象 16
2.8.4 請求鉤子 17
2.8.5 響應(yīng) 18
2.9 Flask擴(kuò)展 19
第3章 模板 20
3.1 Jinja2模板引擎 20
3.1.1 渲染模板 21
3.1.2 變量 21
3.1.3 控制結(jié)構(gòu) 22
3.2 使用Flask-Bootstrap集成Bootstrap 24
3.3 自定義錯(cuò)誤頁面 27
3.4 鏈接 29
3.5 靜態(tài)文件 30
3.6 使用Flask-Moment本地化日期和時(shí)間 31
第4章 Web表單 34
4.1 配置 34
4.2 表單類 35
4.3 把表單渲染成HTML 37
4.4 在視圖函數(shù)中處理表單 38
4.5 重定向和用戶會(huì)話 40
4.6 閃現(xiàn)消息 42
第5章 數(shù)據(jù)庫 44
5.1 SQL數(shù)據(jù)庫 44
5.2 NoSQL數(shù)據(jù)庫 45
5.3 使用SQL還是NoSQL 46
5.4 Python數(shù)據(jù)庫框架 46
5.5 使用Flask-SQLAlchemy管理數(shù)據(jù)庫 47
5.6 定義模型 48
5.7 關(guān)系 49
5.8 數(shù)據(jù)庫操作 51
5.8.1 創(chuàng)建表 51
5.8.2 插入行 51
5.8.3 修改行 53
5.8.4 刪除行 53
5.8.5 查詢行 53
5.9 在視圖函數(shù)中操作數(shù)據(jù)庫 55
5.10 集成Python shell 56
5.11 使用Flask-Migrate實(shí)現(xiàn)數(shù)據(jù)庫遷移 56
5.11.1 創(chuàng)建遷移倉庫 57
5.11.2 創(chuàng)建遷移腳本 57
5.11.3 更新數(shù)據(jù)庫 58
5.11.4 添加幾個(gè)遷移 59
第6章 電子郵件 60
第7章 大型應(yīng)用的結(jié)構(gòu) 65
7.1 項(xiàng)目結(jié)構(gòu) 65
7.2 配置選項(xiàng) 66
7.3 應(yīng)用包 67
7.3.1 使用應(yīng)用工廠函數(shù) 68
7.3.2 在藍(lán)本中實(shí)現(xiàn)應(yīng)用功能 69
7.4 應(yīng)用腳本 71
7.5 需求文件 71
7.6 單元測試 72
7.7 創(chuàng)建數(shù)據(jù)庫 74
7.8 運(yùn)行應(yīng)用 74
第二部分 實(shí)例:社交博客應(yīng)用
第8章 用戶身份驗(yàn)證 77
8.1 Flask的身份驗(yàn)證擴(kuò)展 77
8.2 密碼安全性 77
8.3 創(chuàng)建身份驗(yàn)證藍(lán)本 80
8.4 使用Flask-Login驗(yàn)證用戶身份 81
8.4.1 準(zhǔn)備用于登錄的用戶模型 82
8.4.2 保護(hù)路由 83
8.4.3 添加登錄表單 83
8.4.4 登入用戶 85
8.4.5 登出用戶 86
8.4.6 理解Flask-Login的運(yùn)作方式 86
8.4.7 登錄測試 87
8.5 注冊新用戶 88
8.5.1 添加用戶注冊表單 88
8.5.2 注冊新用戶 90
8.6 確認(rèn)賬戶 90
8.6.1 使用itsdangerous生成確認(rèn)令牌 90
8.6.2 發(fā)送確認(rèn)郵件 92
8.7 管理賬戶 95
第9章 用戶角色 97
9.1 角色在數(shù)據(jù)庫中的表示 97
9.2 賦予角色 100
9.3 檢驗(yàn)角色 101
第 10章 用戶資料 104
10.1 資料信息 104
10.2 用戶資料頁面 105
10.3 資料編輯器 107
10.3.1 用戶級(jí)資料編輯器 107
10.3.2 管理員級(jí)資料編輯器 109
10.4 用戶頭像 111
第 11章 博客文章 115
11.1 提交和顯示博客文章 115
11.2 在資料頁中顯示博客文章 118
11.3 分頁顯示長博客文章列表 118
11.3.1 創(chuàng)建虛擬博客文章數(shù)據(jù) 119
11.3.2 在頁面中渲染數(shù)據(jù) 120
11.3.3 添加分頁導(dǎo)航 121
11.4 使用Markdown和Flask-PageDown支持富文本文章 123
11.4.1 使用Flask-PageDown 124
11.4.2 在服務(wù)器端處理富文本 125
11.5 博客文章的固定鏈接 126
11.6 博客文章編輯器 128
第 12章 關(guān)注者 130
12.1 再論數(shù)據(jù)庫關(guān)系 130
12.1.1 多對多關(guān)系 130
12.1.2 自引用關(guān)系 132
12.1.3 高級(jí)多對多關(guān)系 132
12.2 在資料頁面中顯示關(guān)注者 135
12.3 使用數(shù)據(jù)庫聯(lián)結(jié)查詢所關(guān)注用戶的文章 137
12.4 在首頁顯示所關(guān)注用戶的文章 139
第 13章 用戶評論 143
13.1 評論在數(shù)據(jù)庫中的表示 143
13.2 提交和顯示評論 144
13.3 管理評論 146
第 14章 應(yīng)用編程接口 150
14.1 REST簡介 150
14.1.1 資源就是一切 151
14.1.2 請求方法 151
14.1.3 請求和響應(yīng)主體 152
14.1.4 版本 153
14.2 使用Flask實(shí)現(xiàn)REST式Web服務(wù) 153
14.2.1 創(chuàng)建API藍(lán)本 153
14.2.2 錯(cuò)誤處理 154
14.2.3 使用Flask-HTTPAuth驗(yàn)證用戶身份 156
14.2.4 基于令牌的身份驗(yàn)證 158
14.2.5 資源和JSON的序列化轉(zhuǎn)換 159
14.2.6 實(shí)現(xiàn)資源的各個(gè)端點(diǎn) 161
14.2.7 分頁大型資源集合 163
14.2.8 使用HTTPie測試Web服務(wù) 164
第三部分 成功在望
第 15章 測試 169
15.1 獲取代碼覆蓋度報(bào)告 169
15.2 Flask測試客戶端 172
15.2.1 測試Web應(yīng)用 172
15.2.2 測試Web服務(wù) 175
15.3 使用Selenium進(jìn)行端到端測試 176
15.4 值得測試嗎 180
第 16章 性能 181
16.1 在日志中記錄影響性能的緩慢數(shù)據(jù)庫查詢 181
16.2 分析源碼 183
第 17章 部署 184
17.1 部署流程 184
17.2 把生產(chǎn)環(huán)境中的錯(cuò)誤寫入日志 185
17.3 云部署 186
17.4 Heroku平臺(tái) 186
17.4.1 準(zhǔn)備工作 187
17.4.2 使用heroku local測試 193
17.4.3 執(zhí)行g(shù)it push命令部署 194
17.4.4 升級(jí)后重新部署 195
17.5 Docker容器 195
17.5.1 安裝Docker 195
17.5.2 構(gòu)建容器映像 196
17.5.3 運(yùn)行容器 199
17.5.4 審查運(yùn)行中的容器 200
17.5.5 把容器映像推送到外部注冊處 200
17.5.6 使用外部數(shù)據(jù)庫 201
17.5.7 使用Docker Compose編排容器 202
17.5.8 清理舊容器和映像 205
17.5.9 在生產(chǎn)環(huán)境中使用Docker 205
17.6 傳統(tǒng)部署方式 206
17.6.1 架設(shè)服務(wù)器 206
17.6.2 導(dǎo)入環(huán)境變量 207
17.6.3 配置日志 207
第 18章 其他資源 209
18.1 使用集成開發(fā)環(huán)境 209
18.2 尋找Flask擴(kuò)展 209
18.3 尋求幫助 210
18.4 參與Flask社區(qū) 210
作者簡介 211
關(guān)于封面 211