本書重點(diǎn)講解Web編程的相關(guān)知識(shí)點(diǎn),并搭配150多個(gè)示例代碼和兩個(gè)綜合項(xiàng)目,可以幫助讀者快速、深入地理解和應(yīng)用相關(guān)技術(shù)。
本書共6章。第1章Web編程簡介,主要包括Web編程的相關(guān)簡介等知識(shí)點(diǎn);第2章Web開發(fā)框架簡介,主要包括Web開發(fā)框架的相關(guān)簡介等知識(shí)點(diǎn);第3章Flask,主要包括Flask簡介、安裝Flask、第1個(gè)Flask項(xiàng)目、Flask實(shí)例對象、路由、模板、類視圖、藍(lán)圖、SQLAlchemy、Flask-SQLAlchemy、Alembic、Flask-Script、Flask-Migrate、表單驗(yàn)證、Cookie和Session、上下文、鉤子函數(shù)和信號等知識(shí)點(diǎn);第4章Flask項(xiàng)目實(shí)戰(zhàn):網(wǎng)上圖書商城,主要包括程序概述、創(chuàng)建數(shù)據(jù)庫、程序目錄結(jié)構(gòu)和程序編寫等知識(shí)點(diǎn);第5章Django,主要包括Django簡介、安裝Django、第1個(gè)Django項(xiàng)目、路由、模板、類視圖、數(shù)據(jù)庫、表單驗(yàn)證、Cookie和Session、上下文處理器、中間件和CSRF防御等知識(shí)點(diǎn);第6章Django項(xiàng)目實(shí)戰(zhàn):網(wǎng)上圖書商城,主要包括程序概述、數(shù)據(jù)庫設(shè)計(jì)和編寫程序等知識(shí)點(diǎn)。
本書可以作為廣大計(jì)算機(jī)軟件技術(shù)人員的參考用書,也可以作為高等院校計(jì)算機(jī)科學(xué)與技術(shù)、自動(dòng)化、軟件工程、網(wǎng)絡(luò)工程、人工智能和信息管理與信息系統(tǒng)等專業(yè)的教學(xué)參考用書。
本書是一本同時(shí)匯集了Flask和Django全開發(fā)流程的Python高階書籍。除了涵蓋知識(shí)點(diǎn)廣泛的特點(diǎn)之外,其內(nèi)容編排也非常新穎,各章節(jié)之間既有獨(dú)立性,又能遞進(jìn)支撐,可以有效縮短學(xué)習(xí)的時(shí)間和成本。此外,本書搭配了多個(gè)示例代碼和綜合項(xiàng)目,使原本就比較難以理解和學(xué)習(xí)的Web編程變得更容易接受,極大地提升了讀者的學(xué)習(xí)樂趣和信心。
隨著互聯(lián)網(wǎng)時(shí)代的到來,眾多編程語言走進(jìn)了大眾的視野。在當(dāng)前大數(shù)據(jù)、人工智能方興未艾之時(shí),相關(guān)工作崗位所需要的技術(shù)人才更是一度出現(xiàn)供不應(yīng)求的現(xiàn)象,而Python正是應(yīng)用于上述技術(shù)領(lǐng)域的最佳編程語言。
Python橫跨多個(gè)互聯(lián)網(wǎng)核心技術(shù)領(lǐng)域,并且以其簡單高效的特點(diǎn),被廣泛地應(yīng)用于各種應(yīng)用場景,包括GUI開發(fā)、游戲開發(fā)、Web開發(fā)、運(yùn)維自動(dòng)化、科學(xué)計(jì)算、數(shù)據(jù)可視化、數(shù)據(jù)挖掘及人工智能等。
此外,隨著國家對人工智能等技術(shù)領(lǐng)域的重視和布局,更凸顯出Python的重要地位。從2018年起,浙江省信息技術(shù)教材已啟用Python,放棄Visual Basic,這一改動(dòng)也意味著Python將成為浙江高考內(nèi)容之一。更有前瞻性的是,山東省最新出版的小學(xué)信息技術(shù)教材,在六年級信息技術(shù)課本中也加入了Python的相關(guān)內(nèi)容終于小學(xué)生也開始學(xué)習(xí)Python了。
而本書正是在這樣的背景之下筆者的傾情之作。本書是Python全棧開發(fā)系列的第4冊,全書共分為6章,將重點(diǎn)講解主流的Web開發(fā)框架,即Flask和Django,并搭配150多個(gè)示例代碼和兩個(gè)綜合項(xiàng)目,理論知識(shí)與實(shí)戰(zhàn)開發(fā)并重,可以幫助讀者快速、深入地理解和應(yīng)用Web編程的相關(guān)技術(shù)。掃描目錄上方的二維碼可下載本書源碼。
著名華人經(jīng)濟(jì)學(xué)家張五常曾經(jīng)說過,即使世界上99%的經(jīng)濟(jì)學(xué)論文沒有發(fā)表,世界依然會(huì)發(fā)展成現(xiàn)在這樣子,而互聯(lián)網(wǎng)時(shí)代的發(fā)展同樣具有其必然性,所以要想成功,我們就必須順勢而為,真正地站穩(wěn)在時(shí)代的風(fēng)口之上。
衷心致謝
首先,感謝每位讀者,感謝您在茫茫書海中選擇了本書,筆者衷心地祝愿各位讀者能夠借助本書學(xué)有所成,并最終順利地完成自己的學(xué)習(xí)目標(biāo)、學(xué)業(yè)考試和職業(yè)選擇。
其次,感謝筆者的導(dǎo)師、同事、學(xué)生和朋友,感謝他們不斷地鼓勵(lì)和幫助筆者,非常榮幸能夠和這些聰明、勤奮、努力、踏實(shí)的人一起學(xué)習(xí)、工作和交流。
最后,感謝筆者的父母,是他們給予了我所需要的一切,沒有他們無私的愛,就沒有筆者今天的事業(yè),更不能達(dá)成我的人生目標(biāo)。
此外,本書在編寫和出版過程中得到了來自沈陽工業(yè)大學(xué)牛連強(qiáng)教授、大連東軟信息學(xué)院張明寶副教授、大連華天軟件有限公司陳秋男先生、51CTO學(xué)堂曹亞莉女士、印孚瑟斯技術(shù)(中國)有限公司崔巍先生和清華大學(xué)出版社趙佳霓編輯的大力支持和幫助,在此衷心地表示感謝。
在本書的編寫過程中,筆者雖然始終本著科學(xué)、嚴(yán)謹(jǐn)?shù)膽B(tài)度,力求精益求精,但書中難免存在疏漏之處,懇請廣大讀者批評指正。
夏正東
2025年5月1日于遼寧大連
夏正東,現(xiàn)任某網(wǎng)絡(luò)技術(shù)公司CTO,系統(tǒng)分析師,擁有十余年一線軟件開發(fā)經(jīng)驗(yàn),長期從事Web系統(tǒng)、GUI開發(fā)框架及數(shù)據(jù)分析等領(lǐng)域的研發(fā)和教學(xué)工作,精通Python、PHP、Web前端及Linux等多項(xiàng)技術(shù),曾就職于東軟、金山及電訊盈科等公司,多次參與沈陽市政府、大連市政府、中國移動(dòng)等合作項(xiàng)目,并在遼寧省部分高校和企業(yè)擔(dān)任計(jì)算機(jī)專業(yè)外聘講師和資深企培講師等職務(wù)。
第1章Python Web編程簡介
第2章Python Web編程的常用概念
第3章Flask
3.1Flask簡介
3.2安裝Flask
3.3第1個(gè)Flask項(xiàng)目
3.4Flask實(shí)例對象
3.5路由
3.5.1路由的聲明
3.5.2唯一規(guī)則
3.5.3路由分類
3.5.4動(dòng)態(tài)構(gòu)建請求URL
3.5.5HTTP請求
3.5.6路由轉(zhuǎn)換器
3.5.7重定向
3.5.8視圖函數(shù)的返回值
3.5.9自定義視圖函數(shù)裝飾器
3.6模板
3.6.1渲染模板
3.6.2模板位置
3.6.3模板變量
3.6.4模板中動(dòng)態(tài)構(gòu)建請求URL
3.6.5模板中的過濾器
3.6.6模板中的控制結(jié)構(gòu)
3.6.7模板注釋
3.6.8宏
3.6.9include標(biāo)簽
3.6.10set語句和with語句
3.6.11加載靜態(tài)文件
3.6.12模板繼承
3.7類視圖
3.8藍(lán)圖
3.8.1應(yīng)用藍(lán)圖
3.8.2藍(lán)圖中加載模板
3.8.3藍(lán)圖中加載靜態(tài)文件
3.8.4在藍(lán)圖中動(dòng)態(tài)構(gòu)建請求URL
3.8.5在藍(lán)圖中實(shí)現(xiàn)子域名
3.9SQLAlchemy
3.9.1安裝SQLAlchemy
3.9.2創(chuàng)建數(shù)據(jù)庫引擎
3.9.3創(chuàng)建數(shù)據(jù)庫
3.9.4創(chuàng)建數(shù)據(jù)表
3.9.5CRUD操作
3.9.6外鍵
3.9.7多表間關(guān)系
3.9.8高級查詢
3.10FlaskSQLAlchemy
3.10.1安裝FlaskSQLAlchemy
3.10.2配置FlaskSQLAlchemy
3.10.3連接數(shù)據(jù)庫
3.10.4獲取數(shù)據(jù)庫對象
3.10.5創(chuàng)建數(shù)據(jù)表
3.10.6CRUD操作
3.10.7多表間關(guān)系
3.11Alembic
3.11.1安裝Alembic
3.11.2Alembic操作
3.11.3在FlaskSQLAlchemy中操作Alembic
3.12FlaskScript
3.12.1安裝FlaskScript
3.12.2創(chuàng)建自定義命令
3.13FlaskMigrate
3.13.1安裝FlaskMigrate
3.13.2FlaskMigrate操作
3.14表單驗(yàn)證
3.14.1安裝WTForms和FlaskWTF
3.14.2HTML表單驗(yàn)證
3.14.3文件上傳驗(yàn)證
3.15Cookie和Session
3.15.1設(shè)置、獲取和刪除Cookie
3.15.2設(shè)置、獲取和刪除Session
3.16CSRF防御
3.17上下文
3.17.1應(yīng)用上下文
3.17.2請求上下文
3.17.3應(yīng)用上下文和請求上下文的區(qū)別
3.18鉤子函數(shù)
3.19信號
3.19.1信號的安裝
3.19.2自定義信號
3.19.3內(nèi)置信號
第4章Flask項(xiàng)目實(shí)戰(zhàn): 網(wǎng)上圖書商城
4.1程序概述
4.2創(chuàng)建數(shù)據(jù)庫
4.3程序目錄結(jié)構(gòu)
4.4程序編寫
第5章Django
5.1Django簡介
5.2安裝Django
5.3第1個(gè)Django項(xiàng)目
5.4路由
5.4.1視圖函數(shù)
5.4.2URL映射
5.4.3HttpRequest對象
5.4.4QueryDict對象
5.4.5HttpResponse對象
5.4.6JsonResponse對象
5.4.7重定向
5.4.8動(dòng)態(tài)路由
5.4.9動(dòng)態(tài)構(gòu)建請求URL
5.4.10路由分發(fā)
5.4.11路由轉(zhuǎn)換器
5.4.12限制請求方法
5.5模板
5.5.1渲染模板
5.5.2模板位置
5.5.3模板變量
5.5.4模板中的控制結(jié)構(gòu)
5.5.5模板注釋
5.5.6常用標(biāo)簽
5.5.7模板中的過濾器
5.5.8模板繼承
5.5.9加載靜態(tài)文件
5.6類視圖
5.7數(shù)據(jù)庫
5.7.1定義數(shù)據(jù)模型
5.7.2Manager類和QuerySet類
5.7.3查詢條件
5.7.4常用字段
5.7.5Meta類
5.7.6外鍵
5.7.7多表間關(guān)系
5.8表單驗(yàn)證
5.8.1HTML表單驗(yàn)證
5.8.2上傳文件驗(yàn)證
5.8.3ModelForm類
5.9Cookie和Session
5.9.1設(shè)置、獲取和刪除Cookie
5.9.2設(shè)置、獲取和刪除Session
5.10上下文處理器
5.11中間件
5.12CSRF防御
第6章Django項(xiàng)目實(shí)戰(zhàn): 網(wǎng)上圖書商城
6.1程序概述
6.2數(shù)據(jù)庫設(shè)計(jì)
6.3編寫程序