Flask Web 開發實戰:入門、進階與原理解析

Flask Web 開發實戰:入門、進階與原理解析

作者: 李輝
出版社: 機械工業
出版在: 2018-09-04
ISBN-13: 9787111606598
ISBN-10: 7111606590
裝訂格式: 平裝
總頁數: 704 頁





內容描述


本書由Flask官方團隊的開發成員撰寫,得到了Flask項目核心維護者的高度認可。
內容上,本書從基礎知識到進階實戰,再到Flask原理和工作機制解析,涵蓋完整的Flask Web開發學習路徑,非常全面。
實戰上,本書從開發環境的搭建、項目的建立與組織到程序的編寫,再到自動化測試、性能優化,最後到生產環境的搭建和部署上線,詳細講解完整的Flask Web程序開發流程,用5個綜合性案例將不同難度層級的知識點及具體原理串聯起來,讓你在開發技巧、原理實現和編程思想上都獲得相應的提升。
技術上,不僅Flask使用的是新發布的穩定版,而且連相關的Python工具包使用的也是全新的版本,同時對未來可能有變化的地方進行了說明,以此確保本書內容在一定時間內不會過時。
本書共16章,分為三部分。
第一部分 基礎篇(第1~6章)
通過大量的程序實例詳細介紹了Flask的所有基礎知識,同時在每章的後面又提供了一些進階技巧,供進階讀者學習。
第二部分 實戰篇(第7~11章)
通過5個真實的項目案例來串接和闡釋不同的知識點,難度逐漸遞增。這5個案例分別為:留言板SayHello、個人博客Bluelog、圖片社交網站Albumy、待辦事項程序Todoism和聊天室CatChat。
第三部分 進階篇(第12~16章)
首先介紹了Flask程序的部署流程:測試、性能優化和部署上線;然後通過一個真實的實例講解了Flask擴展的開發,最後以源代碼為切入點深入剖析了Flask的實現原理與主要工作機制。


目錄大綱


前言
第一部分基礎篇
第1章初識Flask2 
1.1搭建開發環境3 
1.1.1 Pipenv工作流3 
1.1.2安裝Flask7 
1.1.3集成開發環境8 
1.2 Hello, Flask!11 
1.2.1創建程序實例11 
1.2. 2註冊路由12 
1.3啟動開發服務器14 
1.3.1 Run,Flask,Run!14 
1.3.2更多的啟動選項18 
1.3.3設置運行環境18 
1.4 Python Shell20 
1.5 Flask擴展21 
1.6項目配置22 
1.7 URL與端點23 
1.8 Flask命令23 
1.9模板與靜態文件24 
1.10 Flask與MVC架構25 
1.11本章小結26 
第2章Flask與HTTP27 
2.1請求響應循環27 
2.2 HTTP請求29 
2.2.1請求報文29 
2.2.2 Request對象31 
2.2 .3在Flask中處理請求34 
2.2.4請求鉤子37 
2.3 HTTP響應38
2.3.1響應報文39 
2.3.1在Flask中生成響應40 
2.3.2響應格式43 
2.3.3來一塊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進階實踐57 
2.5.1重定向回上一個頁面57 
2.5.2使用AJAX技術發送異步請求60 
2.5.3 HTTP服務器端推送64 
2.5.4 Web安全防範65 
2.6本章小結74 
第3章模板75 
3.1模板基本用法75 
3.1.1創建模板76 
3.1.2模板語法77 
3.1.3渲染模板78 
3.2模板輔助工具80 
3.2.1上下文80 
3.2.2全局對象82 
3.2. 3過濾器83 
3.2.4測試器85 
3.2.5模板環境對象87 
3.3模板結構組織88 
3.3.1局部模板88 
3.3.2宏88 
3.3.3模板繼承90 
3.4模板進階實踐93
3.4.1空白控制93 
3.4.2加載靜態文件94 
3.4.3消息閃現98 
3.4.4自定義錯誤頁面100 
3.4.5 JavaScript和CSS中的Jinja2101 
3.5本章小結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處理表單數據112 
4.3.1提交表單112 
4.3.2驗證表單數據113 
4.3 .3在模板中渲染錯誤消息117 
4.4表單進階實踐118 
4.4.1設置錯誤消息語言118 
4.4.2使用宏渲染表單120 
4.4.3自定義驗證器121 
4.4.4文件上傳122 
4.4.5使用Flask -CKEditor集成富文本編輯器129 
4.4.6單個表單多個提交按鈕132 
4.4.7單個頁面多個表單133 
4.5本章小結137 
第5章數據庫138 
5.1數據庫的分類139 
5.1.1 SQL139
5.1.2 NoSQL139 
5.1.3如何選擇?140 
5.2 ORM魔法140 
5.3使用Flask-SQLAlchemy管理數據庫142 
5.3.1連接數據庫服務器142 
5.3.2定義數據庫模型144 
5.3.3創建數據庫和表145 
5.4數據庫操作146 
5.4.1 CRUD147 
5.4.2在視圖函數里操作數據庫151 
5.5定義關係156 
5.5.1配置Python Shell上下文157 
5.5.2一對多158 
5.5.3多對一164 
5.5.4一對一165 
5.5.5多對多166 
5.6更新數據庫表168 
5.6. 1重新生成表168 
5.6.2使用Flask-Migrate遷移數據庫169 
5.6.3開發時是否需要遷移?171 
5.7數據庫進階實踐172 
5.7.1級聯操作172 
5.7.2事件監聽175 
5.8本章小結177 
第6章電子郵件178 
6.1使用Flask-Mail發送電子郵件179 
6.1.1配置Flask-Mail179 
6.1.2構建郵件數據182
6.1.3發送郵件182 
6.2使用事務郵件服務SendGird183 
6.2.1註冊SendGird183 
6.2.2 SendGrid SMTP轉發185 
6.2.3 SendGrid Web API轉發185 
6.3電子郵件進階實踐188 
6.3.1提供HTML正文188 
6.3.2使用Jinja2模板組織郵件正文189 
6.3.3異步發送郵件191 
6.4本章小結192 
第二部分實戰篇
第7章留言板194 
7.1使用包組織代碼195 
7.1.1配置文件196 
7.1.2創建程序實例197 
7.2 Web程序開發流程198 
7.2.1程序功能設計199 
7.2.1前端頁面開發200 
7.2.3後端程序開發202 
7.3使用Bootstrap-Flask簡化頁面編寫206 
7.3.1加載資源文件207 
7.3.2快捷渲染表單207 
7.4使用Flask-Moment本地化日期和時間209 
7.4.1本地化前的準備209 
7.4.2使用Flask-Moment集成Moment.js209 
7.4.3渲染時間日期210
7.5使用Faker生成虛擬數據213 
7.6使用Flask-DebugToolbar調試程序215 
7.7 Flask配置的兩種組織形式216 
7.7.1環境變量優先217 
7.7.2實例文件夾覆蓋217 
7.8本章小結218 
第8章個人博客219 
8.1大型項目結構220 
8.1.1使用藍本模塊化程序221 
8.1.2使用類組織配置227 
8.1.3使用工廠函數創建程序實例228 
8.2編寫程序骨架232 
8.2.1數據庫233 
8.2.2模板240 
8.2.3表單246 
8.2.4視圖函數249 
8.2.5電子郵件支持249 
8.3編寫博客前台251 
8.3.1分頁顯示文章列表251 
8.3.2顯示文章正文258 
8.3.3文章固定鏈接259 
8.3.4顯示分類文章列表262 
8.3 .5顯示評論列表263 
8.3.6發表評論與回复266 
8.3.7支持回複評論267 
8.3.8網站主題切換269 
8.4初始化博客271 
8.4.1安全存儲密碼271 
8.4.2創建管理員用戶273
8.5使用Flask-Login管理用戶認證275 
8.5.1獲取當前用戶276


作者介紹


李輝(Grey Li)
Flask官方開發團隊(Pallets Team)成員,知乎專欄“Hello, Flask!”作者,HelloFlask.com網站創建者。對Flask有非常深入的研究,熟悉它的源代碼,有豐富的項目經驗。
他熱愛分享和創造,曾為Flask等多個開源項目貢獻過代碼,你可以在GitHub(github.com/greyli)上看到他的開源活動。在他的個人網站(greyli.com)上,你可以了解到關於他的更多信息。




相關書籍

大數據 Hadoop 3.X 分佈式處理實戰

作者 吳章勇 楊強

2018-09-04

Joe Nagata 的 LEGO MINDSTORMS NXT 步行機器人製作入門

作者 Joe Nagata 程永佳 譯

2018-09-04

Angular 2 Cookbook - Second Edition

作者 Matt Frisbie

2018-09-04