Flask Web開(kāi)發(fā)實(shí)戰(zhàn):入門、進(jìn)階與原理解析

2021-05-11 22:17 更新

Flask Web開(kāi)發(fā)實(shí)戰(zhàn):入門、進(jìn)階與原理解析

李輝 著

  • 出版社: 機(jī)械工業(yè)出版社
  • ISBN:9787111606598
  • 版次:1
  • 商品編碼:12430774
  • 品牌:機(jī)工出版
  • 包裝:平裝
  • 叢書(shū)名: Web開(kāi)發(fā)技術(shù)叢書(shū)
  • 開(kāi)本:16開(kāi)
  • 出版時(shí)間:2018-09-01
  • 用紙:膠版紙
  • 頁(yè)數(shù):681


點(diǎn)此購(gòu)買


編輯推薦

適讀人群 :本書(shū)適合了解Python基本語(yǔ)法,想要自己動(dòng)手做網(wǎng)站的編程人員;熟悉Python。想要從事Python Web開(kāi)發(fā)的后端工程師、運(yùn)維工程師和爬蟲(chóng)工程師;香蔥Django等其他Python Web框架轉(zhuǎn)向Flask的Python工程師閱讀。

(1)作者是Flask官方開(kāi)發(fā)團(tuán)隊(duì)成員,為Flask和其他多個(gè)Python項(xiàng)目貢獻(xiàn)源代碼,是知乎著名專欄“Hello, Flask!”的作者

(2)本書(shū)獲得Flask開(kāi)發(fā)團(tuán)隊(duì)核心維護(hù)者高度評(píng)價(jià)

(3)內(nèi)容全面,從基礎(chǔ)知識(shí)到進(jìn)階實(shí)戰(zhàn),再到源碼分析,提供完善的Flask學(xué)習(xí)路徑;

(4)實(shí)戰(zhàn)性強(qiáng),5個(gè)綜合性案例將不同難度層級(jí)的知識(shí)點(diǎn)及具體原理串聯(lián)起來(lái),讓你在開(kāi)發(fā)技巧、原理實(shí)現(xiàn)和編程思想上都獲得相應(yīng)提升;

(5)技術(shù)新穎,F(xiàn)lask框架本身,以及其他相關(guān)Python框架,全部使用的是新發(fā)布的技術(shù)版本。


內(nèi)容簡(jiǎn)介

本書(shū)由Flask官方團(tuán)隊(duì)的開(kāi)發(fā)成員撰寫,得到了Flask項(xiàng)目核心維護(hù)者的高度認(rèn)可。

內(nèi)容上,本書(shū)從基礎(chǔ)知識(shí)到進(jìn)階實(shí)戰(zhàn),再到Flask原理和工作機(jī)制解析,涵蓋完整的Flask Web開(kāi)發(fā)學(xué)習(xí)路徑,非常全面。

實(shí)戰(zhàn)上,本書(shū)從開(kāi)發(fā)環(huán)境的搭建、項(xiàng)目的建立與組織到程序的編寫,再到自動(dòng)化測(cè)試、性能優(yōu)化,最后到生產(chǎn)環(huán)境的搭建和部署上線,詳細(xì)講解完整的Flask Web程序開(kāi)發(fā)流程,用5個(gè)綜合性案例將不同難度層級(jí)的知識(shí)點(diǎn)及具體原理串聯(lián)起來(lái),讓你在開(kāi)發(fā)技巧、原理實(shí)現(xiàn)和編程思想上都獲得相應(yīng)的提升。

技術(shù)上,基于Flask全新的穩(wěn)定版本,同時(shí)兼容Python2.7和Python3.6,而且連相關(guān)的Python工具包使用的也是全新的版本。同時(shí),對(duì)未來(lái)可能有變化的地方進(jìn)行了說(shuō)明,以此確保本書(shū)內(nèi)容在一定時(shí)間內(nèi)不會(huì)過(guò)時(shí)。

本書(shū)共16章,分為三部分。

第一部分 基礎(chǔ)篇(第1~6章)

通過(guò)大量的程序?qū)嵗敿?xì)介紹了Flask的所有基礎(chǔ)知識(shí),同時(shí)在每章的后面又提供了一些進(jìn)階技巧,供進(jìn)階讀者學(xué)習(xí)。

第二部分 實(shí)戰(zhàn)篇(第7~11章)

通過(guò)5個(gè)真實(shí)的項(xiàng)目案例來(lái)串接和闡釋不同的知識(shí)點(diǎn),難度逐漸遞增。這5個(gè)案例分別為:留言板SayHello、個(gè)人博客Bluelog、圖片社交網(wǎng)站Albumy、待辦事項(xiàng)程序Todoism和聊天室CatChat。

第三部分 進(jìn)階篇(第12~16章)

首先介紹了Flask程序的部署流程:測(cè)試、性能優(yōu)化和部署上線;然后通過(guò)一個(gè)真實(shí)的實(shí)例講解了Flask擴(kuò)展的開(kāi)發(fā),最后以源代碼為切入點(diǎn)深入剖析了Flask的實(shí)現(xiàn)原理與主要工作機(jī)制。


作者簡(jiǎn)介

李輝(Grey Li)

Flask官方開(kāi)發(fā)團(tuán)隊(duì)(Pallets Team)成員,知乎專欄“Hello, Flask!”作者,HelloFlask.com網(wǎng)站創(chuàng)建者。對(duì)Flask有非常深入的研究,熟悉它的源代碼,有豐富的項(xiàng)目經(jīng)驗(yàn)。他熱愛(ài)分享和創(chuàng)造,曾為Flask等多個(gè)開(kāi)源項(xiàng)目貢獻(xiàn)過(guò)代碼,你可以在GitHub(github.com/greyli)上看到他的開(kāi)源活動(dòng)。在他的個(gè)人網(wǎng)站(greyli.com)上,你可以了解到關(guān)于他的更多信息。


精彩書(shū)評(píng)

這本書(shū)內(nèi)容翔實(shí),推薦給想要系統(tǒng)學(xué)習(xí)Flask的人。不要漏掉書(shū)中的小知識(shí)點(diǎn)哦。

——Hsiaoming Yang Flask開(kāi)發(fā)團(tuán)隊(duì)核心維護(hù)者

這本《Flask Web開(kāi)發(fā)實(shí)戰(zhàn)》非常有趣,是一本能夠給讀者帶來(lái)幫助的書(shū),作為一個(gè)Flask框架的愛(ài)好者,我也很期待這本書(shū)的出版。

——黃健宏 《Redis設(shè)計(jì)與實(shí)現(xiàn)》作者

Grey Li is a really helpful contributor to Flask and the Python community. He is making it easier for more people to learn and use Flask.

——David Lord Flask開(kāi)發(fā)團(tuán)隊(duì)核心維護(hù)者


目錄

目錄 Contents

前言

第一部分 基礎(chǔ)篇

第1章 初識(shí)Flask2

1.1 搭建開(kāi)發(fā)環(huán)境3

1.1.1 Pipenv工作流3

1.1.2 安裝Flask7

1.1.3 集成開(kāi)發(fā)環(huán)境8

1.2 Hello, Flask!11

1.2.1 創(chuàng)建程序?qū)嵗?1

1.2.2 注冊(cè)路由12

1.3 啟動(dòng)開(kāi)發(fā)服務(wù)器14

1.3.1 Run,F(xiàn)lask,Run!14

1.3.2 更多的啟動(dòng)選項(xiàng)18

1.3.3 設(shè)置運(yùn)行環(huán)境18

1.4 Python Shell20

1.5 Flask擴(kuò)展21

1.6 項(xiàng)目配置22

1.7 URL與端點(diǎn)23

1.8 Flask命令23

1.9 模板與靜態(tài)文件24

1.10 Flask與MVC架構(gòu)25

1.11 本章小結(jié)26

第2章 Flask與HTTP27

2.1 請(qǐng)求響應(yīng)循環(huán)27

2.2 HTTP請(qǐng)求29

2.2.1 請(qǐng)求報(bào)文29

2.2.2 Request對(duì)象31

2.2.3 在Flask中處理請(qǐng)求34

2.2.4 請(qǐng)求鉤子37

2.3 HTTP響應(yīng)38

2.3.1 響應(yīng)報(bào)文39

2.3.1 在Flask中生成響應(yīng)40

2.3.2 響應(yīng)格式43

2.3.3 來(lái)一塊Cookie46

2.3.4 session:安全的Cookie49

2.4 Flask上下文54

2.4.1 上下文全局變量54

2.4.2 激活上下文55

2.4.3 上下文鉤子56

2.5 HTTP進(jìn)階實(shí)踐57

2.5.1 重定向回上一個(gè)頁(yè)面57

2.5.2 使用AJAX技術(shù)發(fā)送異步請(qǐng)求60

2.5.3 HTTP服務(wù)器端推送64

2.5.4 Web安全防范65

2.6 本章小結(jié)74

第3章 模板75

3.1 模板基本用法75

3.1.1 創(chuàng)建模板76

3.1.2 模板語(yǔ)法77

3.1.3 渲染模板78

3.2 模板輔助工具80

3.2.1 上下文80

3.2.2 全局對(duì)象82

3.2.3 過(guò)濾器83

3.2.4 測(cè)試器85

3.2.5 模板環(huán)境對(duì)象87

3.3 模板結(jié)構(gòu)組織88

3.3.1 局部模板88

3.3.2 宏88

3.3.3 模板繼承90

3.4 模板進(jìn)階實(shí)踐93

3.4.1 空白控制93

3.4.2 加載靜態(tài)文件94

3.4.3 消息閃現(xiàn)98

3.4.4 自定義錯(cuò)誤頁(yè)面100

3.4.5 JavaScript和CSS中的Jinja2101

3.5 本章小結(jié)103

第4章 表單104

4.1 HTML表單104

4.2 使用Flask-WTF處理表單106

4.2.1 定義WTForms表單類106

4.2.2 輸出HTML代碼109

4.2.3 在模板中渲染表單110

4.3 處理表單數(shù)據(jù)112

4.3.1 提交表單112

4.3.2 驗(yàn)證表單數(shù)據(jù)113

4.3.3 在模板中渲染錯(cuò)誤消息117

4.4 表單進(jìn)階實(shí)踐118

4.4.1 設(shè)置錯(cuò)誤消息語(yǔ)言118

4.4.2 使用宏渲染表單120

4.4.3 自定義驗(yàn)證器121

4.4.4 文件上傳122

4.4.5 使用Flask-CKEditor集成富文本編輯器129

4.4.6 單個(gè)表單多個(gè)提交按鈕132

4.4.7 單個(gè)頁(yè)面多個(gè)表單133

4.5 本章小結(jié)137

第5章 數(shù)據(jù)庫(kù)138

5.1 數(shù)據(jù)庫(kù)的分類139

5.1.1 SQL139

5.1.2 NoSQL139

5.1.3 如何選擇?140

5.2 ORM魔法140

5.3 使用Flask-SQLAlchemy管理數(shù)據(jù)庫(kù)142

5.3.1 連接數(shù)據(jù)庫(kù)服務(wù)器142

5.3.2 定義數(shù)據(jù)庫(kù)模型144

5.3.3 創(chuàng)建數(shù)據(jù)庫(kù)和表145

5.4 數(shù)據(jù)庫(kù)操作146

5.4.1 CRUD147

5.4.2 在視圖函數(shù)里操作數(shù)據(jù)庫(kù)151

5.5 定義關(guān)系156

5.5.1 配置Python Shell上下文157

5.5.2 一對(duì)多158

5.5.3 多對(duì)一164

5.5.4 一對(duì)一165

5.5.5 多對(duì)多166

5.6 更新數(shù)據(jù)庫(kù)表168

5.6.1 重新生成表168

5.6.2 使用Flask-Migrate遷移數(shù)據(jù)庫(kù)169

5.6.3 開(kāi)發(fā)時(shí)是否需要遷移?171

5.7 數(shù)據(jù)庫(kù)進(jìn)階實(shí)踐172

5.7.1 級(jí)聯(lián)操作172

5.7.2 事件監(jiān)聽(tīng)175

5.8 本章小結(jié)177

第6章 電子郵件178

6.1 使用Flask-Mail發(fā)送電子郵件179

6.1.1 配置Flask-Mail179

6.1.2 構(gòu)建郵件數(shù)據(jù)182

6.1.3 發(fā)送郵件182

6.2 使用事務(wù)郵件服務(wù)SendGird183

6.2.1 注冊(cè)SendGird183

6.2.2 SendGrid SMTP轉(zhuǎn)發(fā)185

6.2.3 SendGrid Web API轉(zhuǎn)發(fā)185

6.3 電子郵件進(jìn)階實(shí)踐188

6.3.1 提供HTML正文188

6.3.2 使用Jinja2模板組織郵件正文189

6.3.3 異步發(fā)送郵件191

6.4 本章小結(jié)192

第二部分 實(shí)戰(zhàn)篇

第7章 留言板194

7.1 使用包組織代碼195

7.1.1 配置文件196

7.1.2 創(chuàng)建程序?qū)嵗?97

7.2 Web程序開(kāi)發(fā)流程198

7.2.1 程序功能設(shè)計(jì)199

7.2.1 前端頁(yè)面開(kāi)發(fā)200

7.2.3 后端程序開(kāi)發(fā)202

7.3 使用Bootstrap-Flask簡(jiǎn)化頁(yè)面編寫206

7.3.1 加載資源文件207

7.3.2 快捷渲染表單207

7.4 使用Flask-Moment本地化日期和時(shí)間209

7.4.1 本地化前的準(zhǔn)備209

7.4.2 使用Flask-Moment集成Moment.js209

7.4.3 渲染時(shí)間日期210

7.5 使用Faker生成虛擬數(shù)據(jù)213

7.6 使用Flask-DebugToolbar調(diào)試程序215

7.7 Flask配置的兩種組織形式216

7.7.1 環(huán)境變量?jī)?yōu)先217

7.7.2 實(shí)例文件夾覆蓋217

7.8 本章小結(jié)218

第8章 個(gè)人博客219

8.1 大型項(xiàng)目結(jié)構(gòu)220

8.1.1 使用藍(lán)本模塊化程序221

8.1.2 使用類組織配置227

8.1.3 使用工廠函數(shù)創(chuàng)建程序?qū)嵗?28

8.2 編寫程序骨架232

8.2.1 數(shù)據(jù)庫(kù)233

8.2.2 模板240

8.2.3 表單246

8.2.4 視圖函數(shù)249

8.2.5 電子郵件支持249

8.3 編寫博客前臺(tái)251

8.3.1 分頁(yè)顯示文章列表251

8.3.2 顯示文章正文258

8.3.3 文章固定鏈接259

8.3.4 顯示分類文章列表262

8.3.5 顯示評(píng)論列表263

8.3.6 發(fā)表評(píng)論與回復(fù)266

8.3.7 支持回復(fù)評(píng)論267

8.3.8 網(wǎng)站主題切換269

8.4 初始化博客271

8.4.1 安全存儲(chǔ)密碼271

8.4.2 創(chuàng)建管理員用戶273

8.5 使用Flask-Login管理用戶認(rèn)證275

8.5.1 獲取當(dāng)前用戶276

8.5.2 登入用戶277

8.5.3 登出用戶278

8.5.4 視圖保護(hù)279

8.6 使用CSRFProtect實(shí)現(xiàn)CSRF保護(hù)281

8.7 編寫博客后臺(tái)283

8.7.1 文章管理284

8.7.2 評(píng)論管理291

8.7.3 分類管理297

8.8 本章小結(jié)298

第9章 圖片社交網(wǎng)站299

9.1 項(xiàng)目組織架構(gòu)300

9.1.1 功能式架構(gòu)300

9.1.2 分區(qū)式架構(gòu)302

9.1.3 混合式架構(gòu)303

9.1.4 如何選擇303

9.2 編寫程序骨架303

9.2.1 數(shù)據(jù)庫(kù)模型與虛擬數(shù)據(jù)305

9.2.2 模板與靜態(tài)文件307

9.3 高級(jí)用戶認(rèn)證308

9.3.1 用戶注冊(cè)309

9.3.2 驗(yàn)證郵箱地址311

9.3.3 使用裝飾器過(guò)濾未確認(rèn)用戶315

9.3.4 密碼重置316

9.4 基于用戶角色的權(quán)限管理319

9.4.1 角色與權(quán)限模型319

9.4.2 設(shè)置角色與權(quán)限320

9.4.3 寫入角色與權(quán)限321

9.4.4 驗(yàn)證用戶權(quán)限323

9.5 使用Flask-Dropzone優(yōu)化文件上傳325

9.5.1 配置Flask-Dropzone326

9.5.2 渲染上傳區(qū)域328

9.5.3 處理并保存上傳圖片329

9.6 使用Flask-Avatars處理用戶頭像334

9.6.1 默認(rèn)頭像335

9.6.2 生成隨機(jī)頭像335

9.7 圖片展示與管理337

9.7.1 在用戶主頁(yè)顯示圖片列表338

9.7.2 圖片詳情頁(yè)341

9.7.3 上一張下一張?zhí)D(zhuǎn)342

9.7.4 刪除確認(rèn)模態(tài)框344

9.7.5 舉報(bào)圖片346

9.7.6 圖片描述347

9.7.7 圖片標(biāo)簽349

9.7.8 用戶資料彈窗353

9.8 收藏圖片358

9.8.1 使用關(guān)聯(lián)模型表示多對(duì)多關(guān)系358

9.8.2 添加和取消收藏360

9.8.3 收藏者和收藏頁(yè)面362

9.9 用戶關(guān)注365

9.9.1 自引用多對(duì)多關(guān)系365

9.9.2 關(guān)注與取消關(guān)注366

9.9.3 顯示關(guān)注用戶列表369

9.9.4 使用AJAX在彈窗中執(zhí)行關(guān)注操作371

9.10 消息提醒378

9.10.1 提醒消息在數(shù)據(jù)庫(kù)中的表示379

9.10.2 創(chuàng)建提醒379

9.10.3 顯示和管理提醒380

9.10.4 通過(guò)輪詢實(shí)時(shí)更新未讀計(jì)數(shù)382

9.11 用戶資料與賬戶設(shè)置384

9.11.1 編輯個(gè)人資料385

9.11.2 自定義頭像386

9.11.3 更改密碼392

9.11.4 提醒消息開(kāi)關(guān)394

9.11.5 將收藏設(shè)為僅自己可見(jiàn)395

9.11.6 注銷賬戶396

9.12 首頁(yè)與探索397

9.12.1 獲取正在關(guān)注用戶的圖片399

9.12.2 使用聯(lián)結(jié)和分組查詢獲取熱門標(biāo)簽401

9.12.3 使用數(shù)據(jù)庫(kù)通用函數(shù)獲取隨機(jī)圖片402

9.13 使用Flask-Whooshee實(shí)現(xiàn)全文搜索403

9.13.1 創(chuàng)建索引404

9.13.2 搜索表單405

9.13.3 顯示搜索結(jié)果406

9.14 編寫網(wǎng)站后臺(tái)407

9.14.1 用戶管理408

9.14.2 資源管理411

9.14.3 面向管理員的用戶資料編輯412

9.15 本章小結(jié)413

第10章 待辦事項(xiàng)程序415

10.1 使用JavaScript和AJAX編寫單頁(yè)程序417

10.1.1 單頁(yè)程序的模板組織418

10.1.2 在根頁(yè)面內(nèi)切換子頁(yè)面421

10.1.3 生成測(cè)試賬戶423

10.1.4 添加新待辦條目424

10.2 國(guó)際化與本地化426

10.2.1 使用Flask-Babel集成Babel427

10.2.2 區(qū)域和語(yǔ)言427

10.2.3 文本的國(guó)際化432

10.2.4 文本的本地化433

10.2.5 時(shí)間與日期的本地化438

10.3 設(shè)計(jì)并編寫Web API440

10.3.1 認(rèn)識(shí)Web API441

10.3.2 設(shè)計(jì)優(yōu)美實(shí)用的Web API443

10.3.3 使用Flask編寫Web API446

10.3.4 使用OAuth認(rèn)證453

10.3.5 資源的序列化461

10.3.6 資源的反序列化465

10.3.7 Web API的測(cè)試與發(fā)布470

10.4 本章小結(jié)473

第11章 在線聊天室474

11.1 編寫程序骨架476

11.2 Gravatar頭像477

11.3 使用Flask-SocketIO建立實(shí)時(shí)雙向通信480

11.3.1 建立Socket.IO連接481

11.3.2 一條消息的旅程482

11.3.3 在線人數(shù)統(tǒng)計(jì)485

11.3.4 通信頻道分離486

11.4 使用Flask-OAuthlib實(shí)現(xiàn)第三方登錄489

11.4.1 編寫OAuth客戶端490

11.4.2 注冊(cè)O(shè)Auth程序491

11.4.3 處理OAuth2授權(quán)493

11.4.4 處理OAuth1授權(quán)505

11.5 聊天室功能增強(qiáng)507

11.5.1 無(wú)限滾動(dòng)加載歷史消息507

11.5.2 Markdown支持510

11.5.3 代碼語(yǔ)法高亮512

11.5.4 標(biāo)簽頁(yè)消息提醒515

11.5.5 瀏覽器桌面通知517

11.5.6 消息管理519

11.6 本章小結(jié)519

第三部分 進(jìn)階篇

第12章 自動(dòng)化測(cè)試522

12.1 認(rèn)識(shí)自動(dòng)化測(cè)試522

12.2 Flask測(cè)試客戶端523

12.3 使用unittest編寫單元測(cè)試525

12.3.1 Flask程序的測(cè)試固件525

12.3.2 編寫測(cè)試用例527

12.3.3 組織測(cè)試533

12.3.4 運(yùn)行測(cè)試535

12.4 使用Selenium進(jìn)行用戶界面測(cè)試536

12.4.1 安裝瀏覽器與驅(qū)動(dòng)537

12.4.2 準(zhǔn)備測(cè)試環(huán)境538

12.4.3 編寫測(cè)試代碼539

12.5 使用Coverage.py計(jì)算測(cè)試覆蓋率541

12.5.1 基本用法542

12.5.2 獲取測(cè)試覆蓋率543

12.6 使用Flake8檢查代碼質(zhì)量544

12.7 本章小結(jié)546

第13章 性能優(yōu)化547

13.1 程序性能分析548

13.1.1 函數(shù)性能分析548

13.1.2 數(shù)據(jù)庫(kù)查詢分析549

13.2 使用Flask-Caching設(shè)置緩存551

13.2.1 緩存視圖函數(shù)552

13.2.2 緩存其他函數(shù)554

13.2.3 更新緩存554

13.2.4 使用Redis作為緩存后端556

13.3 使用Flask-Assets優(yōu)化靜態(tài)資源557

13.3.1 注冊(cè)資源集558

13.3.2 生成資源集文件559

13.3.3 在模板中加載資源集559

13.4 本章小結(jié)562

第14章 部署上線563

14.1 傳統(tǒng)部署VS云部署563

14.2 基本部署流程564

14.3 部署前的準(zhǔn)備566

14.3.1 更新程序配置566

14.3.2 創(chuàng)建生產(chǎn)環(huán)境專用的程序?qū)嵗?67

14.3.3 設(shè)置遷移工具568

14.3.4 程序日志568

14.3.5 手動(dòng)導(dǎo)入環(huán)境變量572

14.3.6 HTTPS轉(zhuǎn)發(fā)572

14.4 部署到Linux服務(wù)器573

14.4.1 使用OpenSSH登錄遠(yuǎn)程主機(jī)573

14.4.2 安裝基本庫(kù)和工具574

14.4.3 安全防護(hù)措施575

14.4.4 推送代碼并初始化程序環(huán)境578

14.4.5 使用Gunicorn運(yùn)行程序579

14.4.6 使用Nginx提供反向代理580

14.4.7 使用Supervisor管理進(jìn)程584

14.4.8 更新部署后的程序586

14.5 部署到PythonAnywhere587

14.5.1 反向代理設(shè)置587

14.5.2 創(chuàng)建PythonAnywhere程序588

14.5.3 推送代碼并初始化程序環(huán)境588

14.5.4 創(chuàng)建數(shù)據(jù)庫(kù)590

14.5.5 設(shè)置虛擬環(huán)境591

14.5.6 靜態(tài)文件592

14.5.7 運(yùn)行和更新程序592

14.6 部署到Heroku594

14.6.1 通過(guò)Heroku Git部署595

14.6.2 使用GitHub部署601

14.7 下一步做什么?603

14.8 本章小結(jié)604

第15章 Flask擴(kuò)展開(kāi)發(fā)605

15.1 擴(kuò)展的命名606

15.2 擴(kuò)展項(xiàng)目骨架606

15.3 編寫擴(kuò)展類608

15.4 添加擴(kuò)展配置610

15.5 實(shí)現(xiàn)擴(kuò)展功能610

15.5.1 加載靜態(tài)資源611

15.5.2 創(chuàng)建分享組件612

15.5.3 在移動(dòng)設(shè)備上隱藏613

15.6 開(kāi)源發(fā)布前的準(zhǔn)備614

15.6.1 添加文檔字符串與注釋614

15.6.2 編寫README與文檔615

15.6.3 為打包做準(zhǔn)備616

15.6.4 編寫示例程序621

15.6.5 編寫單元測(cè)試621

15.7 發(fā)布到PyPI622

15.7.1 創(chuàng)建PyPI賬號(hào)623

15.7.2 使用setuptools打包623

15.7.3 使用twine上傳625

15.8 編寫良好的擴(kuò)展625

15.9 本章小結(jié)627

第16章 Flask工作原理與機(jī)制解析628

16.1 閱讀Flask源碼628

16.1.1 獲取Flask源碼628

16.1.2 如何閱讀源碼629

16.1.3 Flask發(fā)行版本分析637

16.2 Flask的設(shè)計(jì)理念638

16.2.1 “微”框架638

16.2.2 兩個(gè)核心依賴638

16.2.3 顯式程序?qū)ο?38

16.2.4 本地上下文639

16.2.5 三種程序狀態(tài)640

16.2.6 豐富的自定義支持641

16.3 Flask與WSGI641

16.3.1 WSGI程序642

16.3.2 WSGI服務(wù)器643

16.3.3 中間件644

16.4 Flask的工作流程與機(jī)制646

16.4.1 Flask中的請(qǐng)求響應(yīng)循環(huán)646

16.4.2 路由系統(tǒng)649

16.4.3 本地上下文653

16.4.4 請(qǐng)求與響應(yīng)對(duì)象665

16.4.5 session667

16.4.6 藍(lán)本674

16.4.7 模板渲染677

16.5 本章小結(jié)680

附錄A Flask資源681


前言/序言

Preface 前  言

Flask是目前最流行的Python Web框架之一。自2010年開(kāi)源以來(lái),F(xiàn)lask受到了越來(lái)越多的Python開(kāi)發(fā)者的喜歡,其受歡迎程度不輸于Django。截至2018年6月,它在GitHub上已有近36 000個(gè)Star,2000多位Watcher,是目前GitHub中Star數(shù)最多的Python Web框架。

Flask的logo

Flask的圖標(biāo)雖然看起來(lái)很像辣椒,但其實(shí)它是角狀的容器(powder horn)。

Flask僅保留了Web框架的核心,其他的功能都交給擴(kuò)展實(shí)現(xiàn)。如果沒(méi)有合適的擴(kuò)展,你甚至可以自己編寫。Flask不會(huì)替你做決定,也不會(huì)限制你的選擇。它足夠輕量,你可以只用5行就編寫出一個(gè)最簡(jiǎn)單的Web程序,但并不簡(jiǎn)陋,它能夠適應(yīng)各類項(xiàng)目的開(kāi)發(fā)。

因?yàn)镕lask的靈活性,越來(lái)越多的公司選擇Flask作為Web框架,甚至開(kāi)始從Django遷移到Flask。使用Flask的公司在國(guó)外有Netflix、Reddit、Twilio、Mailgun等,在國(guó)內(nèi)則有豆瓣、果殼、下廚房等,這說(shuō)明Flask能經(jīng)受大型項(xiàng)目的挑戰(zhàn),能夠適應(yīng)各種需求。下圖列出了部分使用Flask的公司。

你可以在StackShare上查看完整的使用Flask的公司列表(https://stackshare.io/flask)。

使用Flask的公司

在國(guó)內(nèi),越來(lái)越多的Python程序員開(kāi)始關(guān)注和學(xué)習(xí)Flask。對(duì)于國(guó)內(nèi)的程序員來(lái)說(shuō),相關(guān)書(shū)籍僅有一兩本,內(nèi)容上也過(guò)于陳舊和單薄,希望本書(shū)可以填補(bǔ)這一空白。本書(shū)提供了學(xué)習(xí)Flask的完整路徑,從基礎(chǔ)內(nèi)容到進(jìn)階實(shí)踐,再到源碼分析。同時(shí)也安排了豐富的示例程序,讓讀者可以通過(guò)親自實(shí)踐來(lái)更快地掌握Flask開(kāi)發(fā)。


點(diǎn)此購(gòu)買


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)