錢游 著
適讀人群 :Flask入門與進階人員、Python Web開發(fā)人員、前后端開發(fā)程序員、Web編程愛好者、相關院校的學生、培訓機構的學員
【本書特色】
1. 由淺入深:從基本開發(fā)環(huán)境配置講起,層層深入到實際項目案例開發(fā)。
2. 實例豐富: 116個實例、28個編程練習題帶領讀者上手實踐。
3. 注重實戰(zhàn):詳解新聞系統(tǒng)網(wǎng)站項目案例開發(fā)的完整過程。
4. 重點突出:重點介紹Flask+SQLAlchemy服務端開發(fā),以及Jinja 2模板引擎和Bootstrap前端頁面開發(fā)。
5. 涵蓋廣泛:涵蓋Jinja 2、視圖操作、數(shù)據(jù)庫訪問、Memcached緩存、Bootstrap等熱門Web開發(fā)技術。
【本書精華內容】
第1篇 Flask基礎知識
開發(fā)環(huán)境部署
Flask快速上手
Jinja2 模板引擎
Flask視圖高級技術
Flask數(shù)據(jù)交互
訪問數(shù)據(jù)庫
Memcached緩存系統(tǒng)
Bootstrap的基本使用
第2篇 CMS新聞系統(tǒng)開發(fā)
CMS后臺管理員登錄實現(xiàn)
CMS后臺文章模塊基本功能實現(xiàn)
CMS后臺基本評論及登錄日志等功能的實現(xiàn)
基于角色的訪問控制功能實現(xiàn)
CMS網(wǎng)站前臺功能實現(xiàn)
CMS系統(tǒng)代碼優(yōu)化
第3篇 網(wǎng)站上線準備及部署
CMS系統(tǒng)性能測試與單元測試
網(wǎng)站部署
本書從Flask框架的基礎知識講起,逐步深入到使用Flask進行Web應用開發(fā)實戰(zhàn)。其中,重點介紹了使用Flask+SQLAlchemy進行服務端開發(fā),以及使用Jinja 2模板引擎和Bootstrap進行前端頁面開發(fā)的方法,不但可以讓讀者系統(tǒng)地學習用Python微型框架開發(fā)Web應用的相關知識,而且還能對Web開發(fā)中基于角色訪問權限控制的方法等相關知識有更為深入的理解。本書提供了大量的實戰(zhàn)案例引導讀者由淺入深地學習Flask Web應用開發(fā),可以讓讀者的開發(fā)水平有質的提升。
本書共16章,分為3篇。第1篇為Flask基礎知識,介紹了Flask開發(fā)的環(huán)境部署及入門知識,內容涵蓋了Flask程序的基本結構、Jinja 2模板、Web表單、SQLAlchemy管理數(shù)據(jù)庫、裝飾器的定義和使用、Memcached緩存技術等;第2篇為CMS新聞系統(tǒng)開發(fā),介紹了數(shù)據(jù)庫設計、數(shù)據(jù)庫遷移、無限級分類的實現(xiàn)、登錄日志、角色的訪問權限控制等內容;第3篇為網(wǎng)站上線準備及部署,介紹了Web程序上線部署前必須要進行的單元測試、性能優(yōu)化和環(huán)境部署等內容。
本書內容通俗易懂,案例豐富,實用性強,特別適合Python Web開發(fā)的入門讀者和進階讀者學習,也適合PHP程序員和Java程序員等其他Web開發(fā)愛好者閱讀。另外,本書可以作為相關培訓機構的教材用書。
錢游 畢業(yè)于重慶大學計算機科學與技術專業(yè)。有十余年的軟件開發(fā)經(jīng)驗,先后在西部數(shù)碼成都西維數(shù)碼科技有限公司和中企動力重慶分公司任職,歷任Java程序員、系統(tǒng)架構師等職。參與開發(fā)過的項目有重慶力帆集團績效考核系統(tǒng)、重慶國電睿霖電氣有限公司暨物聯(lián)網(wǎng)云平臺、重慶科創(chuàng)職業(yè)學院官網(wǎng)、重慶城市職業(yè)學院官網(wǎng)等。長期使用Flask框架進行Web應用開發(fā),在Web開發(fā)、微商城開發(fā)、Android移動開發(fā)等領域有豐富的實戰(zhàn)經(jīng)驗?,F(xiàn)從事移動互聯(lián)網(wǎng)與物聯(lián)網(wǎng)應用等領域的研究。
本書圍繞Flask框架展開講解,從理論到實戰(zhàn),帶領讀者實現(xiàn)從零基礎入門到動手實踐項目開發(fā)的飛躍。書中貫穿了作者總結的大量開發(fā)經(jīng)驗與實踐思考,對開發(fā)人員有很大的借鑒意義。
——現(xiàn)伯翰國際總經(jīng)理(原華派科技CTO/人梯國際CTO) 王勇
這是一本實用性很強的書。書中的章節(jié)經(jīng)過了精心編排,可以滿足不同層次讀者的閱讀需求。書中對基礎知識和實踐內容做了科學的安排,可以讓讀者循序漸進地掌握Flask開發(fā)的相關知識和各種開發(fā)技巧。
——神兔未來科技有限公司創(chuàng)始人 王靜逸
本書從基本概念講起,一步步引導讀者掌握Flask框架及其應用開發(fā)。書中重點介紹了Flask開發(fā)中的模板引擎、數(shù)據(jù)交互、數(shù)據(jù)庫訪問和緩存系統(tǒng)等內容,還介紹了用Flask開發(fā)開源內容管理系統(tǒng),以及基于角色訪問控制等進階內容,是一本很適合Python愛好者學習Web開發(fā)的讀物。
——北京郵電大學國際學院企業(yè)顧問團專家 段超
前言
本書內容導圖
第1篇 Flask基礎知識
第1章 開發(fā)環(huán)境部署2
1.1 Python的安裝及配置2
1.1.1 Python的安裝2
1.1.2 測試Python是否安裝成功7
1.2 虛擬環(huán)境的配置8
1.3 PyCharm的安裝及使用11
1.3.1 PyCharm的下載及安裝11
1.3.2 在PyCharm中新建工程14
1.3.3 在PyCharm中設置UTF-8編碼自動創(chuàng)建15
1.3.4 在PyCharm中使用已經(jīng)設置好的虛擬環(huán)境17
1.4 溫故知新20
1.5 習題20
第2章 Flask快速上手21
2.1 Web基礎知識21
2.2 第一個Flask Web程序22
2.2.1 安裝Flask框架23
2.2.2 在Flask中輸出Hello World25
2.3 URL傳遞參數(shù)28
2.4 URL反轉29
2.5 頁面跳轉和重定向30
2.6 溫故知新31
2.7 習題31
第3章 Jinja 2模板引擎33
3.1 模板引擎概述及簡單使用33
3.2 向模板中傳遞參數(shù)35
3.3 模板中的控制語句之if語句38
3.4 模板中的控制語句之for語句40
3.5 Flask的過濾器42
3.5.1 常見過濾器42
3.5.2 自定義過濾器44
3.6 宏的定義及使用46
3.6.1 宏的定義46
3.6.2 宏的導入47
3.6.3 include的使用49
3.7 set和with語句的使用50
3.8 靜態(tài)文件的加載52
3.9 模板的繼承54
3.10 溫故知新57
3.11 習題57
第4章 Flask視圖高級技術58
4.1 app.route與add_url_rule簡介58
4.1.1 app.route的使用58
4.1.2 add_url_rule的使用59
4.2 Flask類視圖61
4.2.1 標準類視圖61
4.2.2 基于方法的類視圖63
4.3 Flask裝飾器66
4.3.1 裝飾器的定義和基本使用66
4.3.2 對帶參數(shù)的函數(shù)使用裝飾器68
4.4 藍圖71
4.5 溫故知新72
4.6 習題73
第5章 Flask數(shù)據(jù)交互74
5.1 使用Flask處理表單74
5.1.1 使用Flask處理通用表單74
5.1.2 使用Flask-WTF處理表單76
5.2 使用Flask上傳文件80
5.2.1 使用Flask上傳文件的簡單實現(xiàn)81
5.2.2 改進上傳功能84
5.3 Cookie的使用86
5.3.1 Cookie的基本概念86
5.3.2 Cookie的基本使用87
5.3.3 設置Cookie的作用域90
5.4 Session的使用92
5.4.1 Session的基本配置92
5.4.2 Session的基本使用93
5.5 鉤子函數(shù)的使用95
5.6 溫故知新97
5.7 習題97
第6章 訪問數(shù)據(jù)庫98
6.1 MySQL數(shù)據(jù)庫安裝98
6.1.1 下載及安裝MySQL98
6.1.2 測試MySQL是否安裝成功99
6.2 Python數(shù)據(jù)庫框架MySQL-Python100
6.2.1 MySQL-Python安裝100
6.2.2 通過Python操作數(shù)據(jù)庫對象101
6.3 通過MySQL-Python進行更新數(shù)據(jù)操作105
6.3.1 增加數(shù)據(jù)105
6.3.2 修改數(shù)據(jù)106
6.3.3 刪除數(shù)據(jù)107
6.4 初識Flask-SQLAlchemy108
6.4.1 SQLAlchemy的安裝108
6.4.2 對象-關系映射實質110
6.4.3 為什么使用ORM111
6.5 Flask-SQLAlchemy初始化112
6.6 Flask-SQLAlchemy模型與表映射方法1114
6.7 Flask-SQLAlchemy模型與表映射方法2118
6.8 數(shù)據(jù)的增、刪、改、查119
6.8.1 數(shù)據(jù)添加119
6.8.2 數(shù)據(jù)查詢121
6.8.3 數(shù)據(jù)修改122
6.8.4 數(shù)據(jù)刪除123
6.9 使用Flask-SQLAlchemy創(chuàng)建一對一的關系表124
6.10 使用Flask-SQLAlchemy創(chuàng)建一對多的關系表126
6.11 使用Flask-SQLAlchemy創(chuàng)建多對多的關系表128
6.12 Flask-Script工具的使用130
6.12.1 安裝Flask-Script并初始化130
6.12.2 Command子類創(chuàng)建命令131
6.12.3 使用Command實例的@command修飾符132
6.12.4 使用Command實例的@option修飾符創(chuàng)建命令132
6.13 Flask循環(huán)引用133
6.14 使用Flask-Migrate實現(xiàn)數(shù)據(jù)庫遷移136
6.14.1 安裝Flask-Migrate插件136
6.14.2 使用Flask-Migrate的步驟136
6.15 溫故知新139
6.16 習題139
第7章 Memcached緩存系統(tǒng)140
7.1 Memcached的安裝140
7.1.1 Memcached的基本概念140
7.1.2 Memcached的安裝141
7.2 Memcached的基本使用143
7.2.1 set和set_multi命令的使用143
7.2.2 get和get_multi命令的使用144
7.2.3 add命令的使用145
7.2.4 replace命令的使用146
7.2.5 append和prepend命令的使用147
7.2.6 delete和delete_multi命令的使用148
7.2.7 decr和incr命令的使用149
7.3 Memcached的安全機制150
7.4 溫故知新151
7.5 習題151
第8章 Bootstrap的基本使用152
8.1 Bootstrap簡介152
8.2 全局CSS樣式154
8.3 柵格系統(tǒng)156
8.4 Bootstrap CSS代碼162
8.5 Bootstrap表格165
8.5.1 基礎表格165
8.5.2 條紋狀表格167
8.5.3 帶邊框的表格168
8.5.4 緊湊的表格和響應式表格170
8.5.5 狀態(tài)類172
8.6 Bootstrap表單173
8.6.1 垂直表單174
8.6.2 內聯(lián)表單175
8.6.3 水平表單180
8.6.4 支持的表單控件181
8.7 Bootstrap按鈕182
8.8 溫故知新185
8.9 習題186
第2篇 CMS新聞系統(tǒng)開發(fā)
第9章 CMS后臺管理員登錄實現(xiàn)188
9.1 CMS系統(tǒng)基本藍圖188
9.2 用戶模型定義190
9.2.1 建立數(shù)據(jù)庫連接并創(chuàng)建用戶模型190
9.2.2 用戶登錄密碼明文變密文的處理193
9.3 管理員登錄194
9.3.1 登錄頁的渲染194
9.3.2 初步實現(xiàn)用戶的登錄196
9.3.3 優(yōu)化登錄-對表單進行過濾驗證199
......
前言
Flask誕生于2010年,是Armin ronacher用Python語言基于Werkzeug工具箱編寫的輕量級Web開發(fā)框架。時至今日,使用Flask開發(fā)Web等應用程序的人越來越多,使用Flask微框架也越來越流行。
目前,Python的就業(yè)前景還是非常好的。國內Python人才需求呈大規(guī)模上升,薪資水平也水漲船高。在Linux運維、Python Web網(wǎng)站工程師、Python自動化測試、數(shù)據(jù)分析和人工智能等諸多領域,對Python人才的需求非常旺盛。目前,業(yè)內幾乎所有大中型互聯(lián)網(wǎng)企業(yè)都在使用Python,如Youtube、Dropbox、BT、Quora(類似于中國的知乎)、豆瓣、知乎、Google、Yahoo、Facebook、NASA、百度、騰訊、汽車之家和美團等。很多知名企業(yè)的網(wǎng)站,諸如豆瓣、知乎和拉勾網(wǎng)等都是用Python語言開發(fā)的。熟練掌握Python語言與Python框架Flask,入職名企妥妥的。
Flask的優(yōu)勢
Web網(wǎng)站發(fā)展至今,特別是服務器端,涉及的知識非常廣泛,這對程序員的要求會越來越高。如果采用成熟、穩(wěn)健的框架,那么一些諸如安全性、數(shù)據(jù)流控制等類型的基礎性工作都可以讓框架來處理,而程序開發(fā)人員則可以把更多的精力放在具體業(yè)務邏輯功能的實現(xiàn)和優(yōu)化上。
使用Flask框架的優(yōu)勢有以下幾點:
可以大大降低開發(fā)難度,提高開發(fā)效率,讓快速、高效的Web開發(fā)成為可能。
可以帶來系統(tǒng)穩(wěn)定性和可擴展性的提升。Flask自由、靈活、可擴展性強、第三方庫的選擇面廣,用第三方庫可以實現(xiàn)自己想要的功能,而且很多第三方庫還可以定制與裁減。
對于初學者來說簡單易學,入門門檻很低,即便沒有多少Web開發(fā)經(jīng)驗,也能很快做出網(wǎng)站,大大節(jié)約了初學者的學習成本。
綜上所述,F(xiàn)lask是一個用Python語言編寫的Web微框架,可以讓開發(fā)人員快速開發(fā)各種Web應用。
筆者在長期的Flask框架使用過程中有切身體會:使用該框架進行Web開發(fā),的確省時、省事、省力。比如表單數(shù)據(jù)的校驗、CSRF攻擊與防御等提供了相應模塊,直接拿過來就可以使用。默認情況下,F(xiàn)lask不包含數(shù)據(jù)庫抽象層和表單驗證等功能。然而Flask支持用擴展來給應用添加這些功能,就如同是用Flask實現(xiàn)的一樣。眾多的擴展提供了數(shù)據(jù)庫集成、表單驗證、上傳處理和各種各樣的開放認證技術等功能。為了把這些心得體會分享給廣大的Web開發(fā)人員,筆者編寫了本書。本書主要介紹了如何基于Python的微框架Flask進行Web開發(fā),內容安排從易到難,講解由淺入深、循序漸進,可以幫助讀者快速掌握Flask Web開發(fā)的大部分常用技術點。
本書特色
由淺入深:本書從基本的開發(fā)環(huán)境配置講起,層層深入到實際項目案例開發(fā),切實為讀者朋友提供了高效學習Flask框架的好方法。
內容全面:本書涵蓋Flask開發(fā)的方方面面,包括Jinja 2、視圖操作、數(shù)據(jù)庫訪問、Memcached緩存和Bootstrap等眾多內容。
實例眾多:本書注重“講練”結合,講解的實例多達116個,還提供了28個配套編程練習題,讓讀者朋友可以通過大量的動手實踐迅速掌握Flask開發(fā)。
注重實戰(zhàn):本書第2、3篇結合新聞系統(tǒng)網(wǎng)站開發(fā),將一個完整的動態(tài)網(wǎng)站項目劃分為典型的工作任務,讓讀者在完成工作任務的過程中學習新技術和新技能。
本書內容
第1篇 Flask基礎知識(第1~8章)
本篇主要介紹了Flask開發(fā)環(huán)境的部署與配置,并重點介紹了Flask開發(fā)所需要掌握的基礎知識,涵蓋Flask程序基本結構、Jinja 2模板引擎、高級視圖、Flask數(shù)據(jù)交互、數(shù)據(jù)庫訪問和Memcached緩存系統(tǒng)等內容。
第2篇 CMS新聞系統(tǒng)開發(fā)(第9~14章)
本篇主要介紹了CMS系統(tǒng)后臺管理員登錄實現(xiàn)、CMS系統(tǒng)后臺文章模塊基本功能實現(xiàn)、CMS后臺基本評論及登錄日志等功能實現(xiàn)、基于角色的訪問控制功能實現(xiàn)、CMS網(wǎng)站前臺功能實現(xiàn)和CMS系統(tǒng)代碼優(yōu)化等相關內容,涉及數(shù)據(jù)庫設計、數(shù)據(jù)庫遷移、無限級分類、登錄日志、角色訪問權限控制等相關知識點。
第3篇 網(wǎng)站上線準備(第15、16章)
本篇主要介紹了Web程序上線部署前必須要進行的單元測試、性能優(yōu)化和環(huán)境部署等相關內容。
配套資源獲取方式
本書涉及的源代碼文件等配套資料需要讀者自行下載。請在華章公司的網(wǎng)站www.hzbook.com上搜索到本書,然后單擊“資料下載”按鈕,即可在本書頁面上找到“配書資源”下載鏈接,單擊該鏈接即可下載。
本書讀者對象
本書適合熟悉Python編程語言,并具備CSS、HTML和jQuery等前端開發(fā)基礎知識,且有志于通過Flask框架開發(fā)Web應用的編程愛好者、程序員和軟件工程師等人員學習和參考,另外還適合Flask全棧開發(fā)培訓機構的培訓學員。主要如下:
想用Python快速開發(fā)網(wǎng)站的人員;
前端開發(fā)者想要學習后端開發(fā)技術的程序員;
熟悉Python其他框架的開發(fā)人員;
熟悉Java和PHP等編程語言而想快速開發(fā)網(wǎng)站的程序員;
其他Web編程愛好者;
各大院校的學生;
相關培訓機構的學員。
如果你是這幾類人中的一員,那么本書就適合你。只要你能堅持學習完本書內容,并按本書設計的案例和習題進行動手實踐和思考,相信當你完成了書中的所有項目案例后,就可以勝任網(wǎng)站開發(fā)這項工作了。
本書作者
本書由錢游編寫完成。筆者長期使用Flask技術進行Web應用開發(fā),有十余年軟件開發(fā)經(jīng)驗,在Web開發(fā)、微商城開發(fā)、Android移動開發(fā)等領域有豐富的實戰(zhàn)經(jīng)驗。筆者現(xiàn)在從事移動互聯(lián)網(wǎng)與物聯(lián)網(wǎng)應用等領域的開發(fā)與研究。
在本書的編寫過程中,為確保內容的正確性而參閱了很多資料。在此,對本書所參考的資料或圖書的原作者表示誠懇的感謝!對不能一一標明資料來源的作者表示真誠的歉意和敬意!對直接或間接為本書的出版傾注了智慧、付出了心力、提供了良好建議及幫助的所有人表示感謝!
由于水平所限,加之寫作時間倉促,書中難免存在錯誤和不嚴謹之處,懇請同行專家和讀者不吝指正。讀者在閱讀本書的過程中若有疑問,可以發(fā)電子郵件獲得幫助。
編者
更多建議: