隨著互聯(lián)網(wǎng)時(shí)代的到來(lái),眾多編程語(yǔ)言走進(jìn)了大眾的視野。在當(dāng)前大數(shù)據(jù)、人工智能方興未艾之時(shí),相關(guān)工作崗位所需要的技術(shù)人才更是一度出現(xiàn)供不應(yīng)求的現(xiàn)象,而Python正是應(yīng)用于上述技術(shù)領(lǐng)域的最佳編程語(yǔ)言。
Python橫跨多個(gè)互聯(lián)網(wǎng)核心技術(shù)領(lǐng)域,并且以其簡(jiǎn)單高效的特點(diǎn),被廣泛地應(yīng)用于各種應(yīng)用場(chǎng)景,包括GUI開(kāi)發(fā)、游戲開(kāi)發(fā)、Web開(kāi)發(fā)、運(yùn)維自動(dòng)化、科學(xué)計(jì)算、數(shù)據(jù)可視化、數(shù)據(jù)挖掘及人工智能等。
此外,隨著國(guó)家對(duì)人工智能等技術(shù)領(lǐng)域的重視和布局,更凸顯出Python的重要地位。從2018年起,浙江省信息技術(shù)教材已啟用Python,放棄Visual Basic,這一改動(dòng)也意味著Python將成為浙江高考內(nèi)容之一。更有前瞻性的是,山東省最新出版的小學(xué)信息技術(shù)教材,在六年級(jí)信息技術(shù)課本中也加入了Python的相關(guān)內(nèi)容終于小學(xué)生也開(kāi)始學(xué)習(xí)Python了。
而本書(shū)正是在這樣的背景之下筆者的傾情之作。本書(shū)是Python全棧開(kāi)發(fā)系列的第4冊(cè),全書(shū)共分為6章,將重點(diǎn)講解主流的Web開(kāi)發(fā)框架,即Flask和Django,并搭配150多個(gè)示例代碼和兩個(gè)綜合項(xiàng)目,理論知識(shí)與實(shí)戰(zhàn)開(kāi)發(fā)并重,可以幫助讀者快速、深入地理解和應(yīng)用Web編程的相關(guān)技術(shù)。掃描目錄上方的二維碼可下載本書(shū)源碼。
著名華人經(jīng)濟(jì)學(xué)家張五常曾經(jīng)說(shuō)過(guò),即使世界上99%的經(jīng)濟(jì)學(xué)論文沒(méi)有發(fā)表,世界依然會(huì)發(fā)展成現(xiàn)在這樣子,而互聯(lián)網(wǎng)時(shí)代的發(fā)展同樣具有其必然性,所以要想成功,我們就必須順勢(shì)而為,真正地站穩(wěn)在時(shí)代的風(fēng)口之上。
衷心致謝
首先,感謝每位讀者,感謝您在茫茫書(shū)海中選擇了本書(shū),筆者衷心地祝愿各位讀者能夠借助本書(shū)學(xué)有所成,并最終順利地完成自己的學(xué)習(xí)目標(biāo)、學(xué)業(yè)考試和職業(yè)選擇。
其次,感謝筆者的導(dǎo)師、同事、學(xué)生和朋友,感謝他們不斷地鼓勵(lì)和幫助筆者,非常榮幸能夠和這些聰明、勤奮、努力、踏實(shí)的人一起學(xué)習(xí)、工作和交流。
最后,感謝筆者的父母,是他們給予了我所需要的一切,沒(méi)有他們無(wú)私的愛(ài),就沒(méi)有筆者今天的事業(yè),更不能達(dá)成我的人生目標(biāo)。
此外,本書(shū)在編寫(xiě)和出版過(guò)程中得到了來(lái)自沈陽(yáng)工業(yè)大學(xué)牛連強(qiáng)教授、大連東軟信息學(xué)院張明寶副教授、大連華天軟件有限公司陳秋男先生、51CTO學(xué)堂曹亞莉女士、印孚瑟斯技術(shù)(中國(guó))有限公司崔巍先生和清華大學(xué)出版社趙佳霓編輯的大力支持和幫助,在此衷心地表示感謝。
在本書(shū)的編寫(xiě)過(guò)程中,筆者雖然始終本著科學(xué)、嚴(yán)謹(jǐn)?shù)膽B(tài)度,力求精益求精,但書(shū)中難免存在疏漏之處,懇請(qǐng)廣大讀者批評(píng)指正。
夏正東
2025年5月1日于遼寧大連
第1章Python Web編程簡(jiǎn)介
第2章Python Web編程的常用概念
第3章Flask
3.1Flask簡(jiǎn)介
3.2安裝Flask
3.3第1個(gè)Flask項(xiàng)目
3.4Flask實(shí)例對(duì)象
3.5路由
3.5.1路由的聲明
3.5.2唯一規(guī)則
3.5.3路由分類(lèi)
3.5.4動(dòng)態(tài)構(gòu)建請(qǐng)求URL
3.5.5HTTP請(qǐng)求
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)建請(qǐng)求URL
3.6.5模板中的過(guò)濾器
3.6.6模板中的控制結(jié)構(gòu)
3.6.7模板注釋
3.6.8宏
3.6.9include標(biāo)簽
3.6.10set語(yǔ)句和with語(yǔ)句
3.6.11加載靜態(tài)文件
3.6.12模板繼承
3.7類(lèi)視圖
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)建請(qǐng)求URL
3.8.5在藍(lán)圖中實(shí)現(xiàn)子域名
3.9SQLAlchemy
3.9.1安裝SQLAlchemy
3.9.2創(chuàng)建數(shù)據(jù)庫(kù)引擎
3.9.3創(chuàng)建數(shù)據(jù)庫(kù)
3.9.4創(chuàng)建數(shù)據(jù)表
3.9.5CRUD操作
3.9.6外鍵
3.9.7多表間關(guān)系
3.9.8高級(jí)查詢(xún)
3.10FlaskSQLAlchemy
3.10.1安裝FlaskSQLAlchemy
3.10.2配置FlaskSQLAlchemy
3.10.3連接數(shù)據(jù)庫(kù)
3.10.4獲取數(shù)據(jù)庫(kù)對(duì)象
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請(qǐng)求上下文
3.17.3應(yīng)用上下文和請(qǐng)求上下文的區(qū)別
3.18鉤子函數(shù)
3.19信號(hào)
3.19.1信號(hào)的安裝
3.19.2自定義信號(hào)
3.19.3內(nèi)置信號(hào)
第4章Flask項(xiàng)目實(shí)戰(zhàn): 網(wǎng)上圖書(shū)商城
4.1程序概述
4.2創(chuàng)建數(shù)據(jù)庫(kù)
4.3程序目錄結(jié)構(gòu)
4.4程序編寫(xiě)
第5章Django
5.1Django簡(jiǎn)介
5.2安裝Django
5.3第1個(gè)Django項(xiàng)目
5.4路由
5.4.1視圖函數(shù)
5.4.2URL映射
5.4.3HttpRequest對(duì)象
5.4.4QueryDict對(duì)象
5.4.5HttpResponse對(duì)象
5.4.6JsonResponse對(duì)象
5.4.7重定向
5.4.8動(dòng)態(tài)路由
5.4.9動(dòng)態(tài)構(gòu)建請(qǐng)求URL
5.4.10路由分發(fā)
5.4.11路由轉(zhuǎn)換器
5.4.12限制請(qǐng)求方法
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模板中的過(guò)濾器
5.5.8模板繼承
5.5.9加載靜態(tài)文件
5.6類(lèi)視圖
5.7數(shù)據(jù)庫(kù)
5.7.1定義數(shù)據(jù)模型
5.7.2Manager類(lèi)和QuerySet類(lèi)
5.7.3查詢(xún)條件
5.7.4常用字段
5.7.5Meta類(lèi)
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類(lèi)
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)上圖書(shū)商城
6.1程序概述
6.2數(shù)據(jù)庫(kù)設(shè)計(jì)
6.3編寫(xiě)程序