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