PythonWeb全棧開發(fā)項(xiàng)目式教程(慕課版) 課件全套 項(xiàng)目1-9:搭建“古典文學(xué)網(wǎng)”的開發(fā)環(huán)境-部署“古典文學(xué)網(wǎng)”項(xiàng)目_第1頁(yè)
PythonWeb全棧開發(fā)項(xiàng)目式教程(慕課版) 課件全套 項(xiàng)目1-9:搭建“古典文學(xué)網(wǎng)”的開發(fā)環(huán)境-部署“古典文學(xué)網(wǎng)”項(xiàng)目_第2頁(yè)
PythonWeb全棧開發(fā)項(xiàng)目式教程(慕課版) 課件全套 項(xiàng)目1-9:搭建“古典文學(xué)網(wǎng)”的開發(fā)環(huán)境-部署“古典文學(xué)網(wǎng)”項(xiàng)目_第3頁(yè)
PythonWeb全棧開發(fā)項(xiàng)目式教程(慕課版) 課件全套 項(xiàng)目1-9:搭建“古典文學(xué)網(wǎng)”的開發(fā)環(huán)境-部署“古典文學(xué)網(wǎng)”項(xiàng)目_第4頁(yè)
PythonWeb全棧開發(fā)項(xiàng)目式教程(慕課版) 課件全套 項(xiàng)目1-9:搭建“古典文學(xué)網(wǎng)”的開發(fā)環(huán)境-部署“古典文學(xué)網(wǎng)”項(xiàng)目_第5頁(yè)
已閱讀5頁(yè),還剩852頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

項(xiàng)目1搭建“古典文學(xué)網(wǎng)”的開發(fā)環(huán)境XXX202X-XX-XX

目錄02.任務(wù)1:搭建項(xiàng)目后端開發(fā)環(huán)境05.任務(wù)4:開發(fā)“hivue”前端項(xiàng)目03.任務(wù)2:開發(fā)“hiflask”后端項(xiàng)目04.任務(wù)3:開發(fā)“hiflask”后端項(xiàng)目01.知識(shí)儲(chǔ)備:全棧開發(fā)技術(shù)06.拓展任務(wù)

學(xué)習(xí)目標(biāo)知識(shí)目標(biāo):

了解“古典文學(xué)網(wǎng)”項(xiàng)目需求,掌握其功能結(jié)構(gòu)與設(shè)計(jì)理念;

了解“全棧開發(fā)”概念與特點(diǎn),掌握其開發(fā)理念,并靈活運(yùn)用于實(shí)踐中;

了解“前后端分離技術(shù)”的原理與優(yōu)勢(shì),掌握其技術(shù)棧及實(shí)際運(yùn)用。能力目標(biāo):

通過(guò)學(xué)習(xí)“古典文學(xué)網(wǎng)”后端技術(shù),能熟練搭建后端開發(fā)環(huán)境;

通過(guò)學(xué)習(xí)“古典文學(xué)網(wǎng)”前端技術(shù),能夠熟練搭建前端開發(fā)環(huán)境。素質(zhì)目標(biāo):

培養(yǎng)軟件工程師的系統(tǒng)思維,嚴(yán)格遵守行業(yè)規(guī)范和標(biāo)準(zhǔn),提高軟件質(zhì)量和可靠性;

培養(yǎng)軟件工程師的責(zé)任感、職業(yè)精神和團(tuán)隊(duì)精神,遵守職業(yè)道德。01項(xiàng)目描述

1.1.項(xiàng)目需求老袁對(duì)“古典文學(xué)網(wǎng)”項(xiàng)目進(jìn)行了如下介紹:該項(xiàng)目是一個(gè)專注于高品質(zhì)古典文學(xué)的在線閱讀與交流平臺(tái),旨在推動(dòng)中華文化的傳承與發(fā)展。在這個(gè)平臺(tái)上,用戶可以欣賞到豐富的古典文學(xué)作品,參與書評(píng)討論,并管理自己的個(gè)人中心。該項(xiàng)目采用全棧開發(fā)方式,運(yùn)用前后端分離技術(shù)架構(gòu),使用Python、Flask、Vue.js、ElementPlus和MySQL等技術(shù)進(jìn)行開發(fā),旨在為用戶提供一款功能強(qiáng)大、界面友好的Web應(yīng)用。

1.2.項(xiàng)目WBS工作分解結(jié)構(gòu)圖小白認(rèn)真聽取了老袁對(duì)“古典文學(xué)網(wǎng)”項(xiàng)目的詳細(xì)介紹,并結(jié)合項(xiàng)目需求文檔,精心繪制了“古典文學(xué)網(wǎng)”項(xiàng)目的WBS工作分解結(jié)構(gòu)圖,如圖所示。02知識(shí)儲(chǔ)備

2.知識(shí)儲(chǔ)備在“古典文學(xué)網(wǎng)”項(xiàng)目正式開發(fā)之前,老袁指導(dǎo)小白先初步了解項(xiàng)目所采用的技術(shù)框架,包括全棧開發(fā)、前后端分離技術(shù)等。

2.1.全棧開發(fā)

全棧開發(fā)是一種能提升開發(fā)效率和軟件質(zhì)量的開發(fā)模式。這種開發(fā)模式,需要開發(fā)人員具備多元化的技能和實(shí)踐經(jīng)驗(yàn),能獨(dú)立承擔(dān)開發(fā)一個(gè)應(yīng)用程序的全部工作,涵蓋前端開發(fā)與后端開發(fā)、數(shù)據(jù)庫(kù)管理以及系統(tǒng)架構(gòu)設(shè)計(jì)等多個(gè)方面。全棧開發(fā)人員應(yīng)熟練掌握HTML、CSS、JavaScript等前端技術(shù),同時(shí)還應(yīng)了解后端語(yǔ)言如Python、Node.js、Ruby等,并對(duì)數(shù)據(jù)庫(kù)管理、系統(tǒng)設(shè)計(jì)以及性能優(yōu)化等領(lǐng)域有所涉獵。

全棧開發(fā)的優(yōu)勢(shì)在于,它能提升開發(fā)效率和軟件質(zhì)量,同時(shí)降低溝通和協(xié)調(diào)成本。因?yàn)槿珬i_發(fā)人員具備全面的技能,所以他們能更深入地理解和掌握項(xiàng)目的整體架構(gòu)和細(xì)節(jié),從而更有效地完成開發(fā)工作。

2.2.前后端分離技術(shù)前后端分離技術(shù)是一種應(yīng)用程序架構(gòu)模式,它將前端(用戶界面)和后端(服務(wù)器端)的開發(fā)任務(wù)明確區(qū)分,并通過(guò)預(yù)先定義的接口進(jìn)行通信。這種架構(gòu)模式的實(shí)施,使得前端和后端開發(fā)團(tuán)隊(duì)能夠獨(dú)立進(jìn)行開發(fā)、測(cè)試和部署工作,從而極大地提高了軟件開發(fā)的效率和質(zhì)量。在前后端分離架構(gòu)中,前端團(tuán)隊(duì)主要負(fù)責(zé)呈現(xiàn)數(shù)據(jù)以及實(shí)現(xiàn)用戶交互,而后端團(tuán)隊(duì)則專注于處理業(yè)務(wù)邏輯和數(shù)據(jù)存儲(chǔ)。前端團(tuán)隊(duì)可以利用各種前端技術(shù)和框架,創(chuàng)造出豐富、動(dòng)態(tài)的用戶界面,為用戶提供流暢、直觀的使用體驗(yàn)。同時(shí),后端團(tuán)隊(duì)則可以利用后端技術(shù)和數(shù)據(jù)庫(kù)管理系統(tǒng),實(shí)現(xiàn)高效、穩(wěn)定的數(shù)據(jù)處理和業(yè)務(wù)邏輯執(zhí)行。前后端分離技術(shù)架構(gòu)如圖1.2所示。

2.2.前后端分離技術(shù)logo圖1.2前后端分離技術(shù)架構(gòu)圖

2.3.Python開發(fā)技術(shù)Python的簡(jiǎn)介Python是由荷蘭計(jì)算機(jī)科學(xué)家吉多范羅蘇姆(GuidovanRossum)于1989年首次開發(fā)的編程語(yǔ)言,最初被設(shè)計(jì)為一種簡(jiǎn)單易學(xué)的腳本語(yǔ)言,主要用于編寫自動(dòng)化腳本。然而,隨著計(jì)算機(jī)科學(xué)的不斷發(fā)展,Python也逐步演變成為一種功能全面、用途廣泛的編程語(yǔ)言。Python的應(yīng)用領(lǐng)域非常廣泛,無(wú)論是Web開發(fā)、數(shù)據(jù)科學(xué)、人工智能、機(jī)器學(xué)習(xí),還是網(wǎng)絡(luò)爬蟲、系統(tǒng)自動(dòng)化、游戲開發(fā)等領(lǐng)域,Python都發(fā)揮著重要的作用。Python的豐富庫(kù)和框架,如Django、Flask、Pandas、NumPy、TensorFlow等,為開發(fā)者提供了強(qiáng)大的工具,使得Python成為許多領(lǐng)域的首選語(yǔ)言。Python語(yǔ)言的Logo圖標(biāo)如圖所示。

pip包管理工具pip是Python的包管理工具,它提供了查找、下載、安裝和卸載Python包的功能。自Python3.4+版本起,pip包管理工具已經(jīng)被集成到Python中,使得在線安裝依賴庫(kù)變得非常方便。在Windows系統(tǒng)中,我們可以通過(guò)“命令行窗口”直接執(zhí)行pip命令,或者在VisualStudioCode的終端窗口中執(zhí)行。這使得在開發(fā)過(guò)程中管理Python包變得更加高效和便捷。

pip包管理工具

2.4.Flask框架Flask框架的簡(jiǎn)介Flask框架是一個(gè)用Python語(yǔ)言編寫的輕量級(jí)Web應(yīng)用框架(Microframework),它適合各種規(guī)模的Web項(xiàng)目,無(wú)論是小型個(gè)人網(wǎng)站還是大型企業(yè)級(jí)應(yīng)用。此外,F(xiàn)lask框架的強(qiáng)大插件庫(kù)為用戶提供了實(shí)現(xiàn)個(gè)性化網(wǎng)站定制的可能性,使其非常適用于快速開發(fā)功能強(qiáng)大的Web應(yīng)用程序和Web服務(wù)API。Flask框架的Logo圖標(biāo)如圖所示。

2.4.Flask框架Flask框架的特點(diǎn)(1)輕量級(jí)和靈活Flask是一個(gè)輕量級(jí)的Web應(yīng)用框架,它只包含核心功能,如路由、模板渲染等。這使得Flask非常靈活,開發(fā)者可以根據(jù)自己的需求自由添加和配置所需的功能。(2)易于擴(kuò)展Flask采用擴(kuò)展機(jī)制,開發(fā)者可以通過(guò)添加擴(kuò)展來(lái)擴(kuò)展其功能。Flask擁有強(qiáng)大的插件庫(kù),這些插件可以為Flask添加各種功能,如數(shù)據(jù)庫(kù)管理、表單驗(yàn)證、用戶認(rèn)證等。(3)簡(jiǎn)潔的APIFlask的API非常簡(jiǎn)潔和易于理解,這使得開發(fā)者能夠更快速地學(xué)習(xí)和使用Flask。同時(shí),簡(jiǎn)潔的API也減少了開發(fā)者的學(xué)習(xí)成本和維護(hù)成本。(4)適用于各種應(yīng)用Flask適用于各種規(guī)模和應(yīng)用類型的Web項(xiàng)目,它的靈活性和可擴(kuò)展性使得它能夠應(yīng)對(duì)各種復(fù)雜場(chǎng)景。

2.5.MySQL數(shù)據(jù)庫(kù)MySQL數(shù)據(jù)庫(kù)是一個(gè)開源的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS),它最初由瑞典的MySQLAB公司開發(fā),而現(xiàn)在它是甲骨文公司(OracleCorporation)的一部分。由于其強(qiáng)大的性能和靈活性,MySQL已經(jīng)成為最受歡迎的開源關(guān)系型數(shù)據(jù)庫(kù)之一。MySQL數(shù)據(jù)庫(kù)的Logo圖標(biāo)如圖所示。

2.5.MySQL數(shù)據(jù)庫(kù)MySQL支持多個(gè)操作系統(tǒng),包括Linux、Windows、macOS等,因此它可以在各種不同的環(huán)境中運(yùn)行。MySQL提供了高效、可靠、穩(wěn)定的數(shù)據(jù)存儲(chǔ)和管理服務(wù)。這使得它成為Web應(yīng)用程序、企業(yè)應(yīng)用程序和移動(dòng)應(yīng)用程序等領(lǐng)域的理想選擇。

2.6.Vue開發(fā)技術(shù)Vue框架的簡(jiǎn)介Vue框架是一個(gè)構(gòu)建用戶界面的漸進(jìn)式JavaScript框架,它的設(shè)計(jì)理念使得開發(fā)者可以靈活地將其應(yīng)用于各種規(guī)模和復(fù)雜度的項(xiàng)目中。與其他大型框架不同,Vue被設(shè)計(jì)為可以自底向上逐層應(yīng)用,這意味著開發(fā)者可以根據(jù)項(xiàng)目的實(shí)際需求逐步引入Vue的功能,從而實(shí)現(xiàn)平滑的過(guò)渡和擴(kuò)展。Vue框架的Logo圖標(biāo)如圖所示。

2.6.Vue開發(fā)技術(shù)Vue框架的簡(jiǎn)介Vue框架的核心庫(kù)專注于視圖層,這使得它易于上手,同時(shí)也便于與第三方庫(kù)或已有項(xiàng)目整合。無(wú)論是簡(jiǎn)單的靜態(tài)頁(yè)面還是復(fù)雜的單頁(yè)應(yīng)用,Vue框架都能提供靈活而高效的解決方案。

2.6.Vue開發(fā)技術(shù)Vue框架的特點(diǎn)(1)輕量級(jí)與簡(jiǎn)單易學(xué)Vue的核心庫(kù)專注于視圖層,使得它相比于其他大型框架更為輕量級(jí)。同時(shí),Vue采用了簡(jiǎn)潔的API設(shè)計(jì),使得開發(fā)者可以快速上手并掌握其使用。(2)組件化開發(fā)Vue通過(guò)組件化的開發(fā)方式,將頁(yè)面拆分為多個(gè)獨(dú)立的組件,每個(gè)組件負(fù)責(zé)自己的邏輯和樣式。組件間可以相互嵌套,使得開發(fā)者能夠構(gòu)建出復(fù)雜且富有層次感的界面。(3)響應(yīng)式數(shù)據(jù)綁定Vue使用了響應(yīng)式的數(shù)據(jù)綁定機(jī)制,當(dāng)數(shù)據(jù)發(fā)生變化時(shí),頁(yè)面會(huì)自動(dòng)更新以反映最新的數(shù)據(jù)狀態(tài)。這種機(jī)制使得開發(fā)者無(wú)須手動(dòng)操作DOM,大大簡(jiǎn)化了開發(fā)過(guò)程。03項(xiàng)目任務(wù)

3.1.搭建項(xiàng)目后端開發(fā)環(huán)境在項(xiàng)目的后端開發(fā)中,我們采用了Python語(yǔ)言、Flask框架、VisualStudioCode開發(fā)工具以及MySQL數(shù)據(jù)庫(kù)等核心技術(shù)。在正式搭建開發(fā)環(huán)境之前,我們必須先確認(rèn)項(xiàng)目電腦所使用的操作系統(tǒng)的版本,以確保兼容性和穩(wěn)定性(本項(xiàng)目使用Windows64位操作系統(tǒng))。隨后,我們需下載與之兼容的開發(fā)工具。需求描述:

3.1.搭建項(xiàng)目后端開發(fā)環(huán)境任務(wù)步驟:1.安裝Python開發(fā)環(huán)境2.安裝Flask框架及擴(kuò)展包3.安裝VisualStudioCode開發(fā)工具4.安裝MySQL數(shù)據(jù)庫(kù)

3.1.搭建項(xiàng)目后端開發(fā)環(huán)境1.安裝Python開發(fā)環(huán)境安裝Python語(yǔ)言環(huán)境,需要下載Python安裝包。我們通過(guò)瀏覽器訪問(wèn)其官方網(wǎng)站,選擇適合自己操作系統(tǒng)版本的Python安裝包,如圖所示。(1)下載Python安裝包

3.1.搭建項(xiàng)目后端開發(fā)環(huán)境下載Python安裝包后,接下來(lái)進(jìn)行安裝。首先,使用鼠標(biāo)左鍵雙擊下載的Python安裝包,這將啟動(dòng)安裝程序。安裝程序通常會(huì)顯示一個(gè)圖形界面,其中包含幾個(gè)步驟來(lái)引導(dǎo)用戶完成安裝過(guò)程,如圖所示。1.安裝Python開發(fā)環(huán)境(2)安裝Python

3.1.搭建項(xiàng)目后端開發(fā)環(huán)境在上述界面勾選“Useadminprivilegeswheninstallingpy.exe”和“Addpython.exetoPATH”兩項(xiàng),并單擊“Customizeinstallation”鏈接,按引導(dǎo)提示進(jìn)行自定義安裝,進(jìn)入高級(jí)選項(xiàng)界面,如圖所示。在上述的安裝界面,勾選圖示中的選項(xiàng),并選中Python安裝目錄(請(qǐng)勿安裝在ProgramFiles目錄下)。單擊“Install”按鈕,完成安裝。1.安裝Python開發(fā)環(huán)境(2)安裝Python

3.1.搭建項(xiàng)目后端開發(fā)環(huán)境首先,按下鍵盤上的Win+R快捷鍵,這將打開“運(yùn)行”對(duì)話框。在對(duì)話框中,輸入cmd命令,并單擊“確定”或按回車鍵,以打開命令行窗口。接下來(lái),在命令行窗口中,輸入python命令,并按回車鍵,將顯示Python的版本信息,即表示已經(jīng)安裝成功,如圖所示。1.安裝Python開發(fā)環(huán)境(3)驗(yàn)證Python

3.1.搭建項(xiàng)目后端開發(fā)環(huán)境由于一些客觀原因,使用Python的pip包管理工具下載第三方庫(kù)時(shí)速度很慢,這時(shí)可以使用鏡像下載,提高下載速度。請(qǐng)?jiān)诿钚写翱谥休斎胍韵旅睿聪隆盎剀囨I”后,完成鏡像的安裝。pipconfigsetglobal.index-url

/pypi/simple1.安裝Python開發(fā)環(huán)境(3)驗(yàn)證Python

3.1.搭建項(xiàng)目后端開發(fā)環(huán)境2.安裝Flask框架及擴(kuò)展包在進(jìn)行項(xiàng)目的后端開發(fā)時(shí),我們使用Flask框架作為主要開發(fā)技術(shù)。為此我們需要使用pip工具來(lái)安裝Flask框架及相關(guān)擴(kuò)展庫(kù)。以下是在本項(xiàng)目中使用到的相關(guān)庫(kù)及其安裝命令的列表。

3.1.搭建項(xiàng)目后端開發(fā)環(huán)境安裝Flask框架為例在此處,我們以安裝Flask框架為例,展示如何使用pip工具安裝Flask框架。首先,打開命令行窗口,在命令行窗口中,輸入以下指令來(lái)安裝Flask框架。pipinstallflask按下“回車鍵”后,pip將開始從Python軟件包索引(PyPI)下載并安裝Flask框架。2.安裝Flask框架及擴(kuò)展包

3.1.搭建項(xiàng)目后端開發(fā)環(huán)境3.安裝VisualStudioCode開發(fā)工具安裝VisualStudioCode(VSCode)開發(fā)工具,需要下載其安裝包。我們通過(guò)瀏覽器訪問(wèn)VSCode的官方網(wǎng)站。在官方網(wǎng)站上,選擇相應(yīng)的VSCode安裝包進(jìn)行下載,如圖所示。(1)下載VSCode安裝包

3.1.搭建項(xiàng)目后端開發(fā)環(huán)境下載VSCode安裝包后,接下來(lái)進(jìn)行安裝。首先,使用鼠標(biāo)左鍵雙擊下載的VSCode安裝包。這通常會(huì)啟動(dòng)安裝向?qū)?,引?dǎo)我們完成安裝過(guò)程。VSCode的操作界面如圖所示。3.安裝VisualStudioCode開發(fā)工具(1)下載VSCode安裝包

3.1.搭建項(xiàng)目后端開發(fā)環(huán)境為了進(jìn)行項(xiàng)目開發(fā),我們還需要安裝一些支持Python的擴(kuò)展插件。這些插件可以增強(qiáng)VSCode的功能,使其更好地支持Python語(yǔ)言。請(qǐng)按照以下步驟安裝相關(guān)擴(kuò)展插件:①

打開VSCode,單擊左側(cè)邊欄的擴(kuò)展圖標(biāo)(快捷鍵Ctrl+Shift+X)打開擴(kuò)展面板。②

在搜索框中輸入插件名稱,然后在搜索結(jié)果中找到對(duì)應(yīng)插件。③

單擊插件旁邊的“Install”按鈕來(lái)安裝插件。3.安裝VisualStudioCode開發(fā)工具(2)VSCode擴(kuò)展插件安裝

3.1.搭建項(xiàng)目后端開發(fā)環(huán)境3.安裝VisualStudioCode開發(fā)工具表1.3后端項(xiàng)目所使用到的VSCode擴(kuò)展庫(kù)

3.1.搭建項(xiàng)目后端開發(fā)環(huán)境我們通過(guò)瀏覽器訪問(wèn)MySQL的官方網(wǎng)站。在官方網(wǎng)站上,選擇相應(yīng)的MySQL安裝包進(jìn)行下載,如圖所示。4.安裝MySQL數(shù)據(jù)庫(kù)(1)下載MySQL安裝包

3.1.搭建項(xiàng)目后端開發(fā)環(huán)境下載MySQL安裝包后,請(qǐng)使用鼠標(biāo)左鍵雙擊MySQL安裝包。這通常會(huì)啟動(dòng)安裝向?qū)?,在安裝引導(dǎo)界面,我們勾選“Full”選項(xiàng),安裝MySQL數(shù)據(jù)庫(kù),如圖所示。4.安裝MySQL數(shù)據(jù)庫(kù)(2)安裝MySQL數(shù)據(jù)庫(kù)

3.1.搭建項(xiàng)目后端開發(fā)環(huán)境當(dāng)我們單擊“Next”按鈕后,安裝程序?qū)㈤_始檢查我們的安裝環(huán)境,如果在檢查安裝環(huán)境的過(guò)程中,提示缺少VC庫(kù)(VisualC++庫(kù)),請(qǐng)先安裝VC庫(kù)。單擊“Next”按鈕,進(jìn)入安裝確認(rèn)界面,如圖所示。在上述界面中,單擊“Execute”按鈕后,開始進(jìn)行安裝。4.安裝MySQL數(shù)據(jù)庫(kù)(2)安裝MySQL數(shù)據(jù)庫(kù)

3.1.搭建項(xiàng)目后端開發(fā)環(huán)境在安裝完成界面,單擊“Next”按鈕后,安裝程序會(huì)進(jìn)入MySQL配置界面。在該配置過(guò)程中,可以配置MySQL的端口、登錄賬號(hào)及密碼等配置信息,請(qǐng)按提示完成安裝。4.安裝MySQL數(shù)據(jù)庫(kù)(2)安裝MySQL數(shù)據(jù)庫(kù)

3.2.開發(fā)“hiflask”后端項(xiàng)目為了確保開發(fā)環(huán)境能夠正常運(yùn)行,我們將開發(fā)一個(gè)簡(jiǎn)單的Flask項(xiàng)目進(jìn)行測(cè)試。需求描述:

3.2.開發(fā)“hiflask”后端項(xiàng)目任務(wù)步驟:1.創(chuàng)建“hiflask”項(xiàng)目2.開發(fā)“hiflask”項(xiàng)目3.運(yùn)行“hiflask”項(xiàng)目

3.2.開發(fā)“hiflask”后端項(xiàng)目1.創(chuàng)建“hiflask”項(xiàng)目首先,在磁盤中新建一個(gè)名為“hiflask”的文件夾,作為項(xiàng)目存放目錄。接下來(lái)啟動(dòng)VSCode開發(fā)工具,單擊菜單欄中的“File”選項(xiàng),然后在下拉菜單中選擇“OpenFolder”命令,打開剛才創(chuàng)建的“hiflask”文件夾,如圖所示。

3.2.開發(fā)“hiflask”后端項(xiàng)目2.開發(fā)“hiflask”項(xiàng)目在“hiflask”項(xiàng)目中,請(qǐng)?jiān)赩SCode的菜單欄中,單擊“File”菜單,然后在下拉菜單中選擇“NewFile...”子菜單,新建一個(gè)名為App.py的文件,并輸入以下代碼:#引入Flask框架fromflaskimportFlask#創(chuàng)建Flask框架引用app=Flask(__name__)#定義一個(gè)請(qǐng)求方法,用于輸出文字@app.route("/")defhello_flask():

return"HelloFlask"#啟動(dòng)Flask程序if__name__=="__main__":

app.run(debug=True)

3.2.開發(fā)“hiflask”后端項(xiàng)目3.運(yùn)行“hiflask”項(xiàng)目請(qǐng)打開“App.py”文件,在VSCode菜單欄中,選中“Run”菜單,然后在下拉菜單中選擇“StartDebugging(F5快捷鍵)”子菜單,啟動(dòng)該項(xiàng)目(選中“PythonFileDebug……”),如圖所示。

3.2.開發(fā)“hiflask”后端項(xiàng)目3.運(yùn)行“hiflask”項(xiàng)目通過(guò)上面的操作,VSCode將啟動(dòng)“hiflask”項(xiàng)目,并在VSCode的Terminal終端出現(xiàn)如圖所示文字,即啟動(dòng)成功。

3.2.開發(fā)“hiflask”后端項(xiàng)目運(yùn)行“hiflask”項(xiàng)目在瀏覽器中輸入上圖中紅框部分的URL,即可查看運(yùn)行效果,如圖所示。注意:在Terminal終端,可通過(guò)快捷鍵Ctrl+C,可以停止項(xiàng)目運(yùn)行。

3.3.搭建項(xiàng)目前端開發(fā)環(huán)境在前端開發(fā)中,我們采用了Note.js、Vue.js、Postman等開發(fā)工具。在正式搭建開發(fā)環(huán)境之時(shí),我們需下載與電腦操作系統(tǒng)兼容的開發(fā)工具。需求描述:

3.3.搭建項(xiàng)目前端開發(fā)環(huán)境任務(wù)步驟:1.安裝Note.js環(huán)境2.安裝Vue開發(fā)插件3.安裝Postman開發(fā)工具

3.3.搭建項(xiàng)目前端開發(fā)環(huán)境1.安裝Note.js環(huán)境安裝Vue.js框架,需要下載Note.js安裝包。我們通過(guò)瀏覽器訪問(wèn)Node.js的官方網(wǎng)站,選擇相應(yīng)的Node.js安裝包進(jìn)行下載,如圖所示。下載Node.js安裝包后,使用鼠標(biāo)左鍵雙擊Node.js安裝包,啟動(dòng)安裝向?qū)?,引?dǎo)我們完成安裝。

3.3.搭建項(xiàng)目前端開發(fā)環(huán)境1.安裝Note.js環(huán)境Node.js安裝完成后,打開命令行窗口,輸入“node–v”命令,并按回車鍵。如果Node.js已經(jīng)成功安裝,會(huì)出現(xiàn)Node.js的版本信息,如圖所示。

3.3.搭建項(xiàng)目前端開發(fā)環(huán)境1.安裝Note.js環(huán)境在進(jìn)行Vue程序開發(fā)時(shí),經(jīng)常會(huì)使用到npm(NodePackageManager)包管理工具,用于安裝、更新和管理Node.js的各種模塊和包。但是由于一些客觀原因,使用npm包工具下載模塊和包速度很慢,這時(shí)可以使用“cnpm”(中國(guó)鏡像的npm)包管理工具代替“npm”。打開命令行窗口,在命令行窗口中輸入以下命令,并按下回車鍵后,完成鏡像的安裝。npminstall-gcnpm--registry=在后續(xù)的項(xiàng)目開發(fā)過(guò)程中,就可以使用它來(lái)安裝和管理Node.js項(xiàng)目的依賴包。cnpm的使用方式和npm的是一樣的,只需將npm的命令換成是cnpm就可以了。

3.3.搭建項(xiàng)目前端開發(fā)環(huán)境2.安裝Vue開發(fā)插件Vue官方推薦使用的集成開發(fā)環(huán)境(IDE)是VisualStudioCode(VSCode),并建議配合Vue語(yǔ)言特性插件Vue-Official使用。我們需要在VSCode中安裝一系列擴(kuò)展插件,具體安裝步驟參考本項(xiàng)目中“1.3.1.搭建項(xiàng)目后端開發(fā)環(huán)境”小節(jié)中的“VSCode擴(kuò)展插件安裝”內(nèi)容。

3.3.搭建項(xiàng)目前端開發(fā)環(huán)境3.安裝Postman開發(fā)工具在開發(fā)“古典文學(xué)網(wǎng)”項(xiàng)目時(shí),前后端采用API接口的方式進(jìn)行數(shù)據(jù)交互。為此,我們選擇了Postman測(cè)試工具進(jìn)行后端API接口測(cè)試。我們通過(guò)瀏覽器訪問(wèn)Postman的官方網(wǎng)站,選擇相應(yīng)的Postman安裝包進(jìn)行下載,如圖所示。

3.3.搭建項(xiàng)目前端開發(fā)環(huán)境3.安裝Postman開發(fā)工具下載Postman安裝包后,請(qǐng)使用鼠標(biāo)左鍵雙擊Postman安裝包,通過(guò)安裝向?qū)?,引?dǎo)我們完成安裝。首次使用Postman時(shí),我們需要注冊(cè)一個(gè)賬號(hào),并使用賬號(hào)登錄后,即可使用其全部功能。Postman的操作界面,如圖所示。

3.4.開發(fā)“hivue”前端項(xiàng)目現(xiàn)在,我們已經(jīng)搭建好“古典文學(xué)網(wǎng)”項(xiàng)目的前端開發(fā)環(huán)境,接下來(lái)將開發(fā)一個(gè)簡(jiǎn)單的Vue項(xiàng)目進(jìn)行測(cè)試。需求描述:

3.4.開發(fā)“hivue”前端項(xiàng)目任務(wù)步驟:1.創(chuàng)建“hivue”項(xiàng)目2.開發(fā)“hivue”項(xiàng)目3.運(yùn)行“hivue”項(xiàng)目

3.4.開發(fā)“hivue”前端項(xiàng)目1.創(chuàng)建“hivue”項(xiàng)目首先,確保我們安裝了最新版本的Node.js,并確定項(xiàng)目工作目錄。打開命令行窗口,通過(guò)cd命令進(jìn)入項(xiàng)目工作目錄,然后輸入以下命令,并按回車鍵。cnpmcreatevue@latest

3.4.開發(fā)“hivue”前端項(xiàng)目1.創(chuàng)建“hivue”項(xiàng)目該命令將會(huì)創(chuàng)建一個(gè)Vue項(xiàng)目。在此過(guò)程中,我們將會(huì)看到一些諸如TypeScript和測(cè)試支持之類的可選功能提示,可通過(guò)左右選擇按鍵選擇是否引入可選功能,按下回車鍵確認(rèn),如圖所示。

3.4.開發(fā)“hivue”前端項(xiàng)目2.開發(fā)“hivue”項(xiàng)目啟動(dòng)VSCode開發(fā)工具,打開剛才創(chuàng)建的“hivue”項(xiàng)目。如圖所示。

3.4.開發(fā)“hivue”前端項(xiàng)目2.開發(fā)“hivue”項(xiàng)目打開“hivue”項(xiàng)目后,需要在VSCode里面進(jìn)行換行符(eol)配置。單擊左側(cè)邊欄的設(shè)置圖標(biāo)

打開設(shè)置面板,在搜索框輸入eol關(guān)鍵字,將其配置為“\n”。如圖所示。

3.4.開發(fā)“hivue”前端項(xiàng)目3.運(yùn)行“hivue”項(xiàng)目首先,在VSCode單擊菜單欄中的“Terminal”選項(xiàng),接著在下拉菜單中選擇“NewTerminal”命令,以打開一個(gè)新的Terminal終端窗口(確保在項(xiàng)目的根目錄下打開Terminal)。然后,在Terminal終端窗口中,輸入并運(yùn)行以下的啟動(dòng)指令,即可啟動(dòng)“hivue”應(yīng)用。cnpminstallcnpmrundev

3.4.開發(fā)“hivue”前端項(xiàng)目3.運(yùn)行“hivue”項(xiàng)目通過(guò)上面的操作,VSCode將啟動(dòng)“hivue”項(xiàng)目,并在VSCode的Terminal終端出現(xiàn)如圖所示文字,即啟動(dòng)成功。

3.4.開發(fā)“hivue”前端項(xiàng)目3.運(yùn)行“hivue”項(xiàng)目在瀏覽器中輸入上圖中紅框部分的URL,即可查看運(yùn)行效果,如圖所示。

3.4.開發(fā)“hivue”前端項(xiàng)目3.運(yùn)行“hivue”項(xiàng)目注意:在VSCode的Terminal終端中首次嘗試運(yùn)行cnpm命令時(shí),可能會(huì)遇到“cnpm無(wú)法加載文件……”之類的錯(cuò)誤提示。為了解決這個(gè)問(wèn)題,我們需要以管理員身份運(yùn)行“WindowsPowerShell”命令行窗口,并在其中執(zhí)行以下指令,將腳本的執(zhí)行策略設(shè)置為“RemoteSigned”。set-ExecutionPolicyRemoteSigned04項(xiàng)目總結(jié)

4.項(xiàng)目總結(jié)在老袁的指導(dǎo)下,小白學(xué)習(xí)了“古典文學(xué)網(wǎng)”項(xiàng)目的技術(shù)框架和知識(shí)。他努力搭建了完整的前后端開發(fā)環(huán)境,更深入地理解了技術(shù)架構(gòu)和技術(shù)棧,并能運(yùn)用到實(shí)際開發(fā)中。這個(gè)重要的成果為項(xiàng)目的順利推進(jìn)打下了基礎(chǔ)。我們期待小白在未來(lái)工作中表現(xiàn)出色,為項(xiàng)目成功貢獻(xiàn)力量。05拓展任務(wù)

5.拓展任務(wù)我們也幸運(yùn)地加入一家軟件公司,需要開發(fā)一個(gè)名為“紅影賞析”的項(xiàng)目。現(xiàn)在我們需要和小白一樣完成該項(xiàng)目的開發(fā)。請(qǐng)完成以下項(xiàng)目任務(wù)。

5.1.繪制“紅影賞析”項(xiàng)目的WBS工作分解結(jié)構(gòu)圖項(xiàng)目簡(jiǎn)介:“紅影賞析”項(xiàng)目是一個(gè)專注于高品質(zhì)紅色電影的在線瀏覽與交流平臺(tái),其主要目標(biāo)是推動(dòng)紅色精神的廣泛傳承與發(fā)展。在該項(xiàng)目中,用戶將能夠欣賞到豐富多樣的紅色電影作品,并參與熱情洋溢的影評(píng)討論,同時(shí)還能輕松管理自己的個(gè)人中心。請(qǐng)參考“古典文學(xué)網(wǎng)”項(xiàng)目,繪制出“紅影賞析”項(xiàng)目的WBS工作分解結(jié)構(gòu)圖,可參考下圖圖。需求描述:

5.2.搭建PythonWeb開發(fā)環(huán)境請(qǐng)搭建“紅影賞析”項(xiàng)目的前后端開發(fā)環(huán)境,以確保自己順利地完成這項(xiàng)任務(wù),為“紅影賞析”項(xiàng)目的后續(xù)開發(fā)打下堅(jiān)實(shí)的基礎(chǔ)。需求描述:謝謝項(xiàng)目2:“古典文學(xué)網(wǎng)”后端框架解析與開發(fā)

目錄01.06.拓展任務(wù)02.知識(shí)儲(chǔ)備04.技能拓展項(xiàng)目描述03.項(xiàng)目任務(wù)05.項(xiàng)目總結(jié)

學(xué)習(xí)目標(biāo)知識(shí)目標(biāo):了解Flask項(xiàng)目結(jié)構(gòu)及特點(diǎn),掌握Flask項(xiàng)目的整體框架結(jié)構(gòu);熟悉Flask的請(qǐng)求和響應(yīng),掌握如何處理請(qǐng)求并返回響應(yīng);熟悉Flask的路由和藍(lán)圖,掌握項(xiàng)目模塊化開發(fā)的理念及應(yīng)用。能力目標(biāo):通過(guò)學(xué)習(xí)Flask項(xiàng)目結(jié)構(gòu),能夠開發(fā)“古典文學(xué)網(wǎng)”的后端項(xiàng)目框架;通過(guò)學(xué)習(xí)Flask的請(qǐng)求和響應(yīng),能夠開發(fā)“注冊(cè)”“登錄”API接口;通過(guò)學(xué)習(xí)Flask的路由和藍(lán)圖,能夠模塊化管理項(xiàng)目中的程序路由。素質(zhì)目標(biāo):培養(yǎng)軟件工程師的系統(tǒng)思維,嚴(yán)格遵守行業(yè)規(guī)范和標(biāo)準(zhǔn),提高軟件質(zhì)量和可靠性;培養(yǎng)軟件工程師的責(zé)任感、職業(yè)精神和團(tuán)隊(duì)精神,遵守職業(yè)道德。01項(xiàng)目描述

1.項(xiàng)目描述

小白已經(jīng)搭建了“古典文學(xué)網(wǎng)”項(xiàng)目的開發(fā)環(huán)境,接下來(lái)他計(jì)劃對(duì)Flask框架技術(shù)進(jìn)行深入研究,以設(shè)計(jì)出后端項(xiàng)目的整體架構(gòu),并基于這一框架,順利完成項(xiàng)目的“注冊(cè)”“登錄”API接口的開發(fā),為項(xiàng)目的順利推進(jìn)奠定堅(jiān)實(shí)基礎(chǔ)。02知識(shí)儲(chǔ)備

2.知識(shí)儲(chǔ)備

為了項(xiàng)目的順利開發(fā),小白需要系統(tǒng)地學(xué)習(xí)Flask框架的項(xiàng)目布局,掌握Flask框架的核心技術(shù),包括路由和藍(lán)圖等關(guān)鍵組件,為后續(xù)的編碼工作做好了充分的準(zhǔn)備。

2.1.Flask程序框架解析1.Flask項(xiàng)目框架

Flask作為一款高度靈活且輕量級(jí)的Web框架,其項(xiàng)目結(jié)構(gòu)并不拘泥于固定的模式,而是賦予了開發(fā)者充分的自由,允許他們根據(jù)自己的喜好進(jìn)行設(shè)計(jì)。以下展示的是一個(gè)典型的Flask項(xiàng)目框架布局,然而在實(shí)際應(yīng)用中,項(xiàng)目的具體結(jié)構(gòu)可能會(huì)因項(xiàng)目的獨(dú)特需求以及團(tuán)隊(duì)的個(gè)性化偏好而有所差異。D:/Projects/hi_svr├──app/│├──__init__.py│├──models.py│├──config.py│├──view.py│├──api/│├──templates/│└──static/├──tests/├──.venv/└──app.py

2.1.Flask程序框架解析1.Flask項(xiàng)目框架項(xiàng)目布局中的一些關(guān)鍵目錄及文件,具體如表所示。目錄/文件說(shuō)明app/一個(gè)包含應(yīng)用代碼和文件的Python包app/api/一個(gè)存放后端Api接口的Python包,包括路由定義、數(shù)據(jù)處理等app/templates/用于存放HTML模板的文件夾。這些模板用于渲染視圖app/static/用于存放靜態(tài)文件的文件夾,如CSS、JavaScript、圖片等app/models.py一個(gè)用于定義數(shù)據(jù)庫(kù)模型的源文件app/views.py一個(gè)用于定義視圖函數(shù)的源文件,處理請(qǐng)求并返回響應(yīng)app/__init.py__一個(gè)用于初始化Flask應(yīng)用的源文件,并導(dǎo)入其他模塊tests/一個(gè)包含測(cè)試模塊的文件夾venv/Python虛擬環(huán)境,用于安裝Flask和其他依賴的包app.py一個(gè)項(xiàng)目程序入口源文件,用于啟動(dòng)項(xiàng)目

2.1.Flask程序框架解析2.Flask應(yīng)用設(shè)置創(chuàng)建Flask應(yīng)用時(shí),最簡(jiǎn)單的方法是開始時(shí)就初始化一個(gè)全局的Flask實(shí)例。但項(xiàng)目變大變復(fù)雜后,這方法可能不夠用。所以,我們可以在函數(shù)里創(chuàng)建Flask實(shí)例,這樣的函數(shù)叫“應(yīng)用工廠”。在應(yīng)用工廠里,我們完成應(yīng)用的配置、注冊(cè)等設(shè)置,然后返回實(shí)例。這樣做讓代碼更易維護(hù)、靈活,項(xiàng)目結(jié)構(gòu)也更清晰和模塊化。

2.1.Flask程序框架解析(1)創(chuàng)建應(yīng)用工廠在app/__init__.py源文件中,我們定義了應(yīng)用工廠函數(shù),其代碼實(shí)現(xiàn)如下:fromflaskimportFlaskdefcreate_app():#構(gòu)建appapp=Flask(__name__)returnapp在上述代碼中,我們定義了一個(gè)應(yīng)用工廠函數(shù)create_app(),在后續(xù)的項(xiàng)目開發(fā)中,它能夠執(zhí)行一系列關(guān)鍵操作,如創(chuàng)建Flask實(shí)例、加載配置文件以及注冊(cè)藍(lán)圖等。2.Flask應(yīng)用設(shè)置

2.1.Flask程序框架解析(2)運(yùn)行應(yīng)用接下來(lái),在app.py文件中,可通過(guò)create_app()函數(shù)來(lái)創(chuàng)建Flask實(shí)例。參考代碼實(shí)現(xiàn)如下:#引入應(yīng)用工廠函數(shù)fromappimportcreate_app#調(diào)用工廠,創(chuàng)建appapp=create_app()#一個(gè)輸出hello的方法@app.route('/')defhello(): return'Hello,World!'#啟動(dòng)Flask程序if__name__=="__main__":app.run()在上述代碼中,我們通過(guò)app=create_app()

代碼創(chuàng)建了一個(gè)Flask實(shí)例app。2.Flask應(yīng)用設(shè)置

2.2.Flask的路由

在Flask應(yīng)用中,路由就是連接用戶請(qǐng)求的URL和視圖函數(shù)的方式。Flask會(huì)根據(jù)HTTP請(qǐng)求的URL在路由表中找到匹配的規(guī)則,然后調(diào)用相應(yīng)的視圖函數(shù),并把結(jié)果返回給用戶。

2.2.Flask的路由1.注冊(cè)路由

Flask使用route()裝飾器或add_url_rule()函數(shù)來(lái)創(chuàng)建URL規(guī)則,將函數(shù)綁定到URL上,實(shí)現(xiàn)路由的注冊(cè)。一旦路由被注冊(cè),當(dāng)用戶訪問(wèn)相應(yīng)的URL時(shí),就會(huì)觸發(fā)對(duì)應(yīng)的視圖函數(shù),并返回該函數(shù)的結(jié)果作為響應(yīng)。

2.2.Flask的路由(1)route()裝飾器注冊(cè)路由

在Flask中,route()裝飾器的語(yǔ)法相對(duì)簡(jiǎn)單且直觀。它用于將一個(gè)URL路徑映射到一個(gè)視圖函數(shù)上。以下是route()裝飾器的基本語(yǔ)法:@app.route(path,methods=['GET','POST',...],**options)defview_function():#函數(shù)體returnresponse1.注冊(cè)路由

2.2.Flask的路由route()裝飾器中參數(shù)含義如下:path:必選參數(shù),一個(gè)字符串,表示URL路徑模式。該字符串必須以“/”開頭;methods:可選參數(shù),包含HTTP方法的列表,指定HTTP請(qǐng)求方法,默認(rèn)為['GET'];**options:可選參數(shù),用于進(jìn)一步定制路由的行為。1.注冊(cè)路由

2.2.Flask的路由

接下來(lái),我們將展示如何使用route()裝飾器來(lái)注冊(cè)路由,實(shí)現(xiàn)視圖函數(shù)與URL之間的映射。以下代碼定義了一個(gè)register()函數(shù),用以輸出一段文字。fromflaskimportFlaskapp=Flask(__name__)#通過(guò)route()方法注冊(cè)路由,URL規(guī)則為:/register@app.route('/register',methods=['POST'])defregister():return'這是register()函數(shù)!'#啟動(dòng)Flask程序if__name__=="__main__":app.run()1.注冊(cè)路由

上述代碼中,我們定義了一個(gè)名為register()的視圖函數(shù),然后使用裝飾器@app.route('/register',methods=['POST'])注冊(cè)路由,將URL“/register”與視圖函數(shù)register()進(jìn)行映射關(guān)聯(lián),HTTP請(qǐng)求方法為POST。

2.2.Flask的路由

項(xiàng)目啟動(dòng)后,我們使用Postman測(cè)試工具對(duì)其進(jìn)行測(cè)試,訪問(wèn)的URL為“:5000/register”,測(cè)試結(jié)果如圖所示。1.注冊(cè)路由

2.2.Flask的路由(2)add_url_rule()函數(shù)注冊(cè)路由

在Flask中,add_url_rule()函數(shù)是另一種注冊(cè)路由的方式,它提供了更多的靈活性和控制。該函數(shù)通常用于在創(chuàng)建Flask應(yīng)用實(shí)例后動(dòng)態(tài)地添加路由規(guī)則。下面是add_url_rule()函數(shù)的基本語(yǔ)法:app.add_url_rule(rule,endpoint=None,view_func=None,methods=None,

strict_slashes=None,**options)1.注冊(cè)路由

2.2.Flask的路由add_url_rule()函數(shù)中參數(shù)含義如下:rule:必選參數(shù),一個(gè)字符串,表示URL規(guī)則;endpoint:可選參數(shù),與視圖函數(shù)相關(guān)聯(lián)的端點(diǎn)名;view_func:可選參數(shù),當(dāng)URL被請(qǐng)求時(shí)調(diào)用的視圖函數(shù)。methods:可選參數(shù),包含HTTP方法的列表,指定HTTP請(qǐng)求方法,默認(rèn)為['GET'];strict_slashes:可選參數(shù),如果為True,則URL必須是嚴(yán)格的,即如果規(guī)則中有斜杠,則URL中也必須包含斜杠。默認(rèn)為None,意味著使用app的配置值;**options:其他可選參數(shù),用于進(jìn)一步定制路由的行為。1.注冊(cè)路由

2.2.Flask的路由下面,我們使用add_url_rule()函數(shù)來(lái)注冊(cè)路由,代碼參考如下。fromflaskimportFlaskapp=Flask(__name__)deflogin():return'這是login()函數(shù)!'#add_url_rule()方法注冊(cè)路由,URL規(guī)則為:/login,視圖函數(shù)為:login()app.add_url_rule(rule="/login",view_func=login)#啟動(dòng)Flask程序if__name__=="__main__":app.run()1.注冊(cè)路由

上述代碼中,我們定義了一個(gè)名為login()的視圖函數(shù),然后使用app.add_url_rule()函數(shù)注冊(cè)路由,將URL“/login”與視圖函數(shù)login()進(jìn)行映射關(guān)聯(lián),HTTP請(qǐng)求方法默認(rèn)為GET。

2.2.Flask的路由

項(xiàng)目啟動(dòng)后,我們使用Postman測(cè)試工具對(duì)其進(jìn)行測(cè)試,訪問(wèn)的URL為“:5000/login”,測(cè)試結(jié)果如圖所示。1.注冊(cè)路由

2.2.Flask的路由2.變量規(guī)則

為了給URL鏈接增加變量,我們可以定義路由規(guī)則,把變量部分用特定的字段標(biāo)記成<variable_name>,其作為關(guān)鍵字參數(shù)傳遞給關(guān)聯(lián)的視圖函數(shù)。下面這個(gè)例子展示了通過(guò)URL傳遞變量,并顯示該變量的功能,參考代碼如下所示。fromflaskimportFlaskapp=Flask(__name__)#通過(guò)<variable_name>標(biāo)記,傳遞變量,URL規(guī)則為:/user/小白@app.route('/user/<name>',methods=['GET','POST'])defshow_name(name):returnname+'歡迎您!'#啟動(dòng)Flask程序if__name__=="__main__":app.run()

2.2.Flask的路由2.變量規(guī)則

上述代碼中,我們定義了一個(gè)show_name(name)視圖函數(shù),該函數(shù)會(huì)接收一個(gè)名為name的變量,在“/user/<name>”路由規(guī)則中,通過(guò)<name>標(biāo)記傳遞字符串?dāng)?shù)據(jù)給視圖函數(shù),HTTP請(qǐng)求方法為GET和POST。項(xiàng)目啟動(dòng)后,我們使用Postman測(cè)試工具對(duì)其進(jìn)行測(cè)試,訪問(wèn)的URL為“:5000/user/小白”,測(cè)試結(jié)果如圖所示。

2.2.Flask的路由2.變量規(guī)則

在上面的示例中,我們使用了默認(rèn)的string轉(zhuǎn)換器,傳遞字符串?dāng)?shù)據(jù)。對(duì)于其他類型的數(shù)據(jù),我們可以使用<converter:variable_name>標(biāo)記,在URL中選擇性地加上一個(gè)轉(zhuǎn)換器,為變量指定規(guī)則。Flask常用的轉(zhuǎn)換器見(jiàn)下表。轉(zhuǎn)換器說(shuō)明示例string(缺省值)接受任何不包含斜杠的文本route('/user/<name>')int接受正整數(shù)route('/user/<int:num>')float接受正浮點(diǎn)數(shù)route('/user/<float:num>')path接收字符串路徑,似string,但可以包含斜杠route('/user/<path:mypath>')uuid接受UUID字符串route('/uuid/<uuid:myuuid>')

2.2.Flask的路由3.URL構(gòu)建

url_for()是Flask框架中一個(gè)非常有用的函數(shù),它用于動(dòng)態(tài)地構(gòu)建URL。它可以幫助我們生成應(yīng)用程序內(nèi)的URL,并確保URL的正確性和安全性。它接受一個(gè)或多個(gè)參數(shù),其中第一個(gè)參數(shù)通常是視圖函數(shù)的名稱,其他參數(shù)則對(duì)應(yīng)于該視圖函數(shù)的路由規(guī)則中的變量。以下是url_for()函數(shù)的基本語(yǔ)法:

url=url_for('視圖函數(shù)名',參數(shù)1=值1,參數(shù)2=值2,...)

url_for()方法中參數(shù)含義如下:“視圖函數(shù)名”是生成URL的視圖函數(shù)的名稱?!皡?shù)1=值1,參數(shù)2=值2,...”是可選參數(shù),對(duì)應(yīng)于視圖函數(shù)的路由規(guī)則中的變量。

2.2.Flask的路由3.URL構(gòu)建

接下來(lái),我們將展示如何使用url_for()方法生成視圖函數(shù)的URL的程序。以下是具體的代碼示例:fromflaskimportFlask,url_forapp=Flask(__name__)@app.route('/myindex',methods=['GET','POST'])defindex():return'這是首頁(yè)函數(shù)!'#URL構(gòu)建@app.route('/urlfor',methods=['GET'])defurlfor():#生成index視圖函數(shù)的URL

index_url=url_for("index")return"URL構(gòu)建:"+"首頁(yè)的url="+index_url#啟動(dòng)Flask程序if__name__=="__main__":app.run()

2.2.Flask的路由3.URL構(gòu)建

上述代碼中,我們定義了一個(gè)index()視圖函數(shù),它的路由是/myindex,同時(shí)在urlfor()視圖函數(shù)中利用url_for()方法生成index()視圖函數(shù)的URL。項(xiàng)目啟動(dòng)后,我們使用Postman測(cè)試工具對(duì)其進(jìn)行測(cè)試,訪問(wèn)的URL為“:5000/urlfor”,測(cè)試結(jié)果如圖所示。

2.3.Flask的請(qǐng)求1.Flask請(qǐng)求方式

在Flask中,處理請(qǐng)求通常涉及接收和解析客戶端發(fā)送的數(shù)據(jù)。Flask支持多種請(qǐng)求方式,其中最常見(jiàn)的是GET和POST請(qǐng)求。除了GET和POST請(qǐng)求,F(xiàn)lask還支持其他HTTP請(qǐng)求方法,如PUT、DELETE等,但它們?cè)赪eb開發(fā)中的使用相對(duì)較少。Flask常見(jiàn)請(qǐng)求方式見(jiàn)下表。請(qǐng)求方式說(shuō)明GET默認(rèn)的請(qǐng)求方式,通常用于從服務(wù)器獲取資源。POST用于向服務(wù)器提交數(shù)據(jù)或文件,請(qǐng)求的數(shù)據(jù)是隱藏發(fā)送的,因此比GET請(qǐng)求更安全。PUT用于向服務(wù)器上傳或更新資源。DELETE用于請(qǐng)求服務(wù)器刪除指定的資源。

2.3.Flask的請(qǐng)求1.Flask請(qǐng)求方式

在注冊(cè)路由時(shí),可以通過(guò)methods參數(shù),指定路由的請(qǐng)求方式,以下代碼展示了設(shè)置register()視圖函數(shù)的請(qǐng)求方式為POST請(qǐng)求。#通過(guò)route()注冊(cè)路由,URL規(guī)則為:/register@app.route('/register',methods=['POST'])defregister():

return'這是register()函數(shù)!'

2.3.Flask的請(qǐng)求2.Flask請(qǐng)求鉤子

在Flask中,請(qǐng)求鉤子(RequestHooks)是一組特殊的函數(shù),它們?cè)谡?qǐng)求處理的不同階段被自動(dòng)調(diào)用。Flask提供了四種請(qǐng)求鉤子,它們可以幫助我們?cè)谡?qǐng)求處理流程中執(zhí)行一些必要的操作,比如認(rèn)證、權(quán)限檢查、數(shù)據(jù)庫(kù)連接管理等。Flask的常用請(qǐng)求鉤子見(jiàn)下表。命令命令說(shuō)明before_first_request這個(gè)鉤子在整個(gè)應(yīng)用程序的生命周期中只會(huì)被調(diào)用一次,且在處理第一個(gè)請(qǐng)求之前被調(diào)用。它通常用于執(zhí)行一些只需要在應(yīng)用程序啟動(dòng)時(shí)執(zhí)行一次的初始化操作。(Flask2.2及以上版本不再支持該請(qǐng)求鉤子)before_request這個(gè)鉤子在每次請(qǐng)求處理之前被調(diào)用。它通常用于執(zhí)行一些每次請(qǐng)求都需要執(zhí)行的操作,比如檢查用戶認(rèn)證狀態(tài)、記錄請(qǐng)求日志等。after_request這個(gè)鉤子在視圖函數(shù)處理完請(qǐng)求之后,但在響應(yīng)返回給客戶端之前被調(diào)用。它通常用于執(zhí)行一些后處理操作,比如修改響應(yīng)等。teardown_request這個(gè)鉤子在每次請(qǐng)求處理完之后被調(diào)用,無(wú)論是否發(fā)生異常。它通常用于執(zhí)行一些清理操作,比如關(guān)閉數(shù)據(jù)庫(kù)連接、釋放資源等。

2.3.Flask的請(qǐng)求2.Flask請(qǐng)求鉤子

在Flask程序中,請(qǐng)求鉤子使用裝飾器實(shí)現(xiàn),接下來(lái)我們編寫代碼模擬Flask程序進(jìn)行用戶認(rèn)證、記錄操作日志和釋放資源的操作,具體代碼如下所示。fromflaskimportFlaskapp=Flask(__name__)#用戶的Token,當(dāng)token=""ortoken="user"判斷用戶是否有操作權(quán)限token=""@app.before_requestdefcheck_auth():

#檢查用戶是否已認(rèn)證iftokenisNoneortoken=="":print("用戶未認(rèn)證,沒(méi)有操作權(quán)限!")return"用戶未認(rèn)證,沒(méi)有操作權(quán)限!"else:print("用戶已認(rèn)證,擁有操作權(quán)限!")pass

2.3.Flask的請(qǐng)求@app.after_requestdefadd_log(response):#給響應(yīng)添加一些頭信息

print("用戶操作成功,記錄操作信息!")returnresponse@app.teardown_requestdefclose_db_connection(exception):#關(guān)閉數(shù)據(jù)庫(kù)連接print("關(guān)閉數(shù)據(jù)庫(kù)連接,釋放資源!")pass@app.route('/index',methods=['GET','POST'])defindex():print("歡迎訪問(wèn)古典文學(xué)網(wǎng)!")return'這是首頁(yè)函數(shù)!'#啟動(dòng)Flask程序if__name__=="__main__":app.run()接上頁(yè)2.Flask請(qǐng)求鉤子

2.3.Flask的請(qǐng)求

上述代碼中,我們?yōu)閏heck_auth()函數(shù)添加了before_request請(qǐng)求鉤子,該函數(shù)會(huì)在每次請(qǐng)求前被自動(dòng)執(zhí)行,它的核心功能是通過(guò)token的判斷,從而驗(yàn)證用戶是否具備相應(yīng)的操作權(quán)限。

在程序中,我們?yōu)閠oken設(shè)置不同的值(token=""或token="user"),然后啟動(dòng)項(xiàng)目。通過(guò)訪問(wèn)“:5000/index”,即可在VSCode的Terminal終端中查看運(yùn)行結(jié)果。具體的運(yùn)行效果如圖所示。2.Flask請(qǐng)求鉤子

2.3.Flask的請(qǐng)求3.重新定向

在Flask中,重定向(Redirect)是一種將用戶從當(dāng)前URL導(dǎo)向到另一個(gè)URL的機(jī)制。這通常用于在用戶完成某項(xiàng)操作后,將他們導(dǎo)向到另一個(gè)頁(yè)面,或者當(dāng)用戶嘗試訪問(wèn)不存在的頁(yè)面時(shí),將他們導(dǎo)向到首頁(yè)或其他合適的頁(yè)面。

在Flask中,我們可以使用redirect()函數(shù),進(jìn)行重新定向,參考代碼如下所示。fromflaskimportFlask,redirect,url_forapp=Flask(__name__)@app.route('/')defindex():#將用戶重定向到'/hello'路由

returnredirect(url_for('hello'))@app.route('/hello')defhello():return'Hello,World!'if__name__=='__main__':app.run()

2.3.Flask的請(qǐng)求3.重新定向

在上述代碼中,index()視圖函數(shù)通過(guò)redirect()函數(shù)重定向到“/hello”路由。此處使用了url_for()函數(shù)用于動(dòng)態(tài)地生成“/hello”路由。項(xiàng)目啟動(dòng)后,可以通過(guò)“:5000”進(jìn)行訪問(wèn),測(cè)試結(jié)果如圖所示。

2.4.Flask上下文

在Flask框架中,上下文(Context)是一個(gè)至關(guān)重要的概念。它賦予了開發(fā)者在請(qǐng)求處理過(guò)程中便捷地訪問(wèn)和操作特定對(duì)象的能力,如當(dāng)前請(qǐng)求對(duì)象、應(yīng)用對(duì)象等。

在Flask中,請(qǐng)求上下文扮演著舉足輕重的角色,它主要由request對(duì)象和session對(duì)象組成。

2.4.Flask上下文1.請(qǐng)求上下文(1)request對(duì)象

request對(duì)象作為Flask框架中的核心組件,匯聚了HTTP請(qǐng)求的所有關(guān)鍵信息。這些信息包括但不限于請(qǐng)求的URL地址、請(qǐng)求頭部字段、請(qǐng)求所使用的方法(如GET、POST等)、查詢參數(shù)、表單提交的數(shù)據(jù)以及上傳的文件等。request對(duì)象的常用屬性和方法已詳細(xì)列于下表。request對(duì)象的常用屬性表屬性說(shuō)明args獲取Url中的請(qǐng)求參數(shù)method獲取請(qǐng)求的HTTP方式cookies獲取包含Cookie名稱和值的字典對(duì)象data獲取字符串形式的請(qǐng)求數(shù)據(jù)form獲取解析后的表單數(shù)據(jù)values包含form和args全部?jī)?nèi)容的CombineMultiDictheaders獲取請(qǐng)求user_agent獲取瀏覽器標(biāo)識(shí)信息

2.4.Flask上下文request對(duì)象的常用方法表方法說(shuō)明close()關(guān)閉當(dāng)前請(qǐng)求get_data()獲取請(qǐng)求中的數(shù)據(jù)get_json()進(jìn)行JSON解析并返回?cái)?shù)據(jù)make_from_data_parse()創(chuàng)建表單數(shù)據(jù)解析器1.請(qǐng)求上下文

2.4.Flask上下文

接下來(lái),我們將模擬一個(gè)登錄程序。這個(gè)程序的主要任務(wù)是接收用戶的登錄請(qǐng)求,并獲取用戶輸入的賬號(hào)及密碼并輸出。具體代碼如下所示。fromflaskimportFlask,requestapp=Flask(__name__)@app.route('/login',methods=['POST'])deflogin():#獲取登錄賬號(hào)及密碼

uname=request.form.get("uname")upwd=request.form.get("upwd")return'您的登錄賬號(hào):'+uname+",密碼:"+upwd#啟動(dòng)Flask程序if__name__=="__main__":app.run()1.請(qǐng)求上下文

在上述代碼中,我們定義了login()視圖函數(shù),模擬用戶登錄。在該函數(shù)中,通過(guò)request.form屬性來(lái)解析用戶提交的表單數(shù)據(jù),從而獲取登錄賬號(hào)和密碼,并將其輸出。

2.4.Flask上下文

當(dāng)項(xiàng)目啟動(dòng)后,我們可以通過(guò)訪問(wèn)“:5000/login”來(lái)觸發(fā)這個(gè)登錄功能,在過(guò)程中,登錄賬號(hào)和密碼需要以表單的形式進(jìn)行提交。測(cè)試結(jié)果如圖所示。1.請(qǐng)求上下文

2.4.Flask上下文(2)session對(duì)象

Flask的session對(duì)象基于cookie機(jī)制實(shí)現(xiàn),其鍵值對(duì)通常存儲(chǔ)在服務(wù)端,形式類似{隨機(jī)字符串:'xxxxxx'}。與此同時(shí),瀏覽器端的cookie中也保存了相同的隨機(jī)字符串,以確保在后續(xù)請(qǐng)求時(shí)能夠進(jìn)行驗(yàn)證。

在使用session對(duì)象之前,我們需進(jìn)行一項(xiàng)重要的配置:設(shè)置SECRET_KEY。由于session是通過(guò)加密后存儲(chǔ)在cookie中的,SECRET_KEY便扮演著加密和解密的關(guān)鍵角色。1.請(qǐng)求上下文

2.4.Flask上下文以下是一個(gè)簡(jiǎn)單的示例,展示了如何使用session對(duì)象存儲(chǔ)和獲取數(shù)據(jù)。fromflaskimportFlask,sessionapp=Flask(__name__)app.secret_key='your_secret_key'#配置SECRET_KEY@app.route('/')

defindex():

#設(shè)置session值

session['user']='小白'

return'保存用戶到session!'@app.route('/get_session')defget_session():

#獲取session值

user=session.get('user')return'session中保存的用戶是:'+user#啟動(dòng)Flask程序if__name__=="__main__":app.run()1.請(qǐng)求上下文

2.4.Flask上下文

在上述代碼中,我們通過(guò)Flask應(yīng)用實(shí)例app設(shè)置了SECRET_KEY,以確保session的安全性。隨后,我們定義了兩個(gè)視圖函數(shù):index()和get_session()。在index()函數(shù)中,我們?yōu)閟ession的user鍵設(shè)置了值小白,用于存儲(chǔ)用戶的標(biāo)識(shí)信息。而在get_session()函數(shù)中,我們則通過(guò)session.get('user')來(lái)檢索并返回session中user鍵所對(duì)應(yīng)的值。

項(xiàng)目啟動(dòng)后,可以通過(guò)訪問(wèn)“:5000/”和“:5000/get_session”來(lái)分別觸發(fā)index()和get_session()函數(shù)。測(cè)試結(jié)果如圖所示。1.請(qǐng)求上下文

2.4.Flask上下文2.應(yīng)用上下文

在Flask應(yīng)用中,應(yīng)用上下文(ApplicationContext)主要負(fù)責(zé)在應(yīng)用層面執(zhí)行一系列操作,如訪問(wèn)配置信息、加載擴(kuò)展等。

2.4.Flask上下文(1)current_app對(duì)象

在開發(fā)過(guò)程中,我們有時(shí)需要在應(yīng)用的各個(gè)角落使用app實(shí)例,然而直接導(dǎo)入可能會(huì)顯得不太方便。此時(shí),current_app便作為全局代理應(yīng)運(yùn)而生,它允許我們?cè)趹?yīng)用的任何位置都能輕松地訪問(wèn)當(dāng)前的Flask應(yīng)用實(shí)例。以下示例展示了如何利用current_app對(duì)象來(lái)獲取程序中配置的密鑰。代碼如下所示。fromflaskimportFlask,current_app

app=Flask(__name__)#假設(shè)我們?cè)贔lask應(yīng)用的配置中設(shè)置了一個(gè)密鑰

app.secret_key='your_secret_key'#配置SECRET_KEY

@app.route('/')defindex():#使用current_app對(duì)象來(lái)獲取配置的密鑰

secret_key=current_app.secret_keyreturn'配置的密鑰為:'+secret_keyif__name__=='__main__':app.run()2.應(yīng)用上下文

上述代碼中,我們?cè)趇ndex()視圖函數(shù)中,通過(guò)current_app.secret_key的方式獲取了之前配置的secret_key密鑰值,并將其作為響應(yīng)返回。

2.4.Flask上下文

項(xiàng)目啟動(dòng)后,可以通過(guò)“:5000”進(jìn)行訪問(wèn),測(cè)試結(jié)果如圖所示。2.應(yīng)用上下文

2.4.Flask上下文

(2)g對(duì)象

g對(duì)象在應(yīng)用上下文中作為全局的一個(gè)臨時(shí)變量存在,充當(dāng)中間媒介的作用。在處理一個(gè)請(qǐng)求的過(guò)程中,g對(duì)象可以用來(lái)存儲(chǔ)一些臨時(shí)信息,這些信息在請(qǐng)求的生命周期內(nèi)都是有效的,但在請(qǐng)求結(jié)束后會(huì)被清除。

以下示例展示了如何利用g對(duì)象來(lái)存儲(chǔ)和獲取臨時(shí)數(shù)據(jù)。代碼如下所示。fromflaskimportFlask,g

app=Flask(__name__)@app.route('/')defindex():#在應(yīng)用上下文中使用g對(duì)象存儲(chǔ)臨時(shí)信息

g.some_data='我是臨時(shí)數(shù)據(jù)!'returng.some_data

if__name__=='__main__':app.run()2.應(yīng)用上下文

在上述代碼中,我們?cè)诙x的路由處理函數(shù)index()中,通過(guò)g對(duì)象存儲(chǔ)了一個(gè)臨時(shí)字符串,并輸出了它的值。

2.4.Flask上下文

項(xiàng)目啟動(dòng)后,可以通過(guò)“:5000”進(jìn)行訪問(wèn),測(cè)試結(jié)果如圖所示。2.應(yīng)用上下文

2.5.Flask的響應(yīng)在Flask中,為了向客戶端返回?cái)?shù)據(jù),我們需要利用Flask的響應(yīng)機(jī)制。

2.5.Flask的響應(yīng)1.響應(yīng)報(bào)文

在Flask中,響應(yīng)(Response)扮演著服務(wù)器向客戶端傳遞數(shù)據(jù)的關(guān)鍵角色,它負(fù)責(zé)承載著服務(wù)器對(duì)客戶端請(qǐng)求的處理結(jié)果。每當(dāng)Flask的視圖函數(shù)被調(diào)用并返回一個(gè)值時(shí),F(xiàn)lask會(huì)自動(dòng)將其轉(zhuǎn)化為響應(yīng)對(duì)象(Response對(duì)象),然后將其發(fā)送給客戶端。響應(yīng)報(bào)文主要由以下幾個(gè)核心部分組成。狀態(tài)碼,表示請(qǐng)求的處理結(jié)果。例如,200表示請(qǐng)求成功,404表示資源未找到等;響應(yīng)頭,包含關(guān)于響應(yīng)的元數(shù)據(jù),如內(nèi)容類型、緩存指令等;響應(yīng)體,這是響應(yīng)的主要內(nèi)容,通常是客戶端所期望的數(shù)據(jù)。它可以是HTML、JSON、XML或其他格式的數(shù)據(jù),具體取決于客戶端的請(qǐng)求和服務(wù)器的處理邏輯。

2.5.Flask的響應(yīng)2.生成響應(yīng)

當(dāng)Flask的視圖函數(shù)被調(diào)用并返回一個(gè)值時(shí),會(huì)將其轉(zhuǎn)化為響應(yīng)對(duì)象(Response對(duì)象)。如果我們需要在程序中主動(dòng)生成響應(yīng),那么可以借助于Response類的構(gòu)造方法或make_response()函數(shù)。接下來(lái),我們將對(duì)這兩種方式進(jìn)行詳細(xì)介紹。

2.5.Flask的響應(yīng)(1)Response類的構(gòu)造方法我們先來(lái)看下Response類的構(gòu)造方法的語(yǔ)法,其語(yǔ)法格式如下:

fromflaskimportResponseresponse=Response(response,status,headers,mimetype,content_type,direct_passthrough)上述構(gòu)造方法中常用參數(shù)的含義如下。response,響應(yīng)內(nèi)容,可以是字符串、字節(jié)串或其他可迭代對(duì)象;status,HTTP狀態(tài)碼,默認(rèn)為200;headers,響應(yīng)頭,是一個(gè)字典或類似字典的對(duì)象mimetype,內(nèi)容的MIME類型,如'text/html'或'application/json';content_type,與mimetype相同,用于設(shè)置內(nèi)容類型。2.生成響應(yīng)

2.5.Flask的響應(yīng)

接下來(lái),我們將通過(guò)Response類的構(gòu)造方法來(lái)生成響應(yīng)并將其返回給客戶端。具體的實(shí)現(xiàn)代碼如下所示:fromflaskimportFlask,Response

app=Flask(__name__)@app.route('/')defindex():

returnResponse('Hello,Flask!',status=201,content_type='text/plain')if__name__=='__main__':app.run()2.生成響應(yīng)

上述代碼中,我們通過(guò)Response類的構(gòu)造方法生成響應(yīng),并通過(guò)傳入response、status和content_type等參數(shù),分別代表了響應(yīng)體內(nèi)容、響應(yīng)狀態(tài)碼、響應(yīng)類型。

2.5.Flask的響應(yīng)

項(xiàng)目啟動(dòng)后,可以通過(guò)“:5000”進(jìn)行訪問(wèn),測(cè)試結(jié)果如圖所示。2.生成響應(yīng)

2.5.Flask的響應(yīng)(2)make_response()函數(shù)

在Flask中,make_response()函數(shù)用于創(chuàng)建和修改響應(yīng)對(duì)象。它具備強(qiáng)大的兼容性,能夠接收多種類型的參數(shù),如字符串、元組、字典以及Response對(duì)象等,并統(tǒng)一轉(zhuǎn)化為Response對(duì)象返回。

接下來(lái),我們將通過(guò)make_response()函數(shù)來(lái)生成響應(yīng)并將其返回給客戶端。具體的實(shí)現(xiàn)代碼如下所示:fromflaskimportFlask,make_response

app=Flask(__name__)@app.route('/')defindex():response=make_response(('Hello,Flask!',201))response.headers['content-type']='text/plain'returnresponseif__name__=='__main__':

app.run()2.生成響應(yīng)

2.5.Flask的響應(yīng)上述代碼中,我們?cè)谝晥D函數(shù)index()中調(diào)用make_response()函數(shù)生成響應(yīng),并通過(guò)傳入response、status和content-type參數(shù)的值依次設(shè)置了響應(yīng)體內(nèi)容、響應(yīng)狀態(tài)碼、響應(yīng)類型。項(xiàng)目啟動(dòng)后,可以通過(guò)“:5000”進(jìn)行訪問(wèn),測(cè)試結(jié)果如圖所示。2.生成響應(yīng)

2.5.Flask的響應(yīng)(3)生成JSON類型的響應(yīng)

在項(xiàng)目后端API開發(fā)中,當(dāng)需要返回JSON格式的響應(yīng)體時(shí),可使用jsonify()函數(shù)創(chuàng)建JSON響應(yīng)。它會(huì)將傳入的參數(shù)轉(zhuǎn)換為JSON格式,并自動(dòng)設(shè)置正確的content-type為application/json,確保客戶端能夠正確解析響應(yīng)內(nèi)容。

接下來(lái),我們將返回一個(gè)JSON響應(yīng)給客戶端。參考代碼如下所示:fromflaskimportFlask,jsonifyapp=Flask(__name__)@app.route('/')defbasic_json():

data={'name':'小白','age':30}returnjsonify(data)

if__name__=='__main__':app.run()2.生成響應(yīng)

2.5.Flask的響應(yīng)

上述代碼中,我們?cè)谝晥D函數(shù)index()

中將data字典被傳遞給jsonify()函數(shù),它返回一個(gè)包含JSON數(shù)據(jù)和正確content-type的響應(yīng)。

項(xiàng)目啟動(dòng)后,可以通過(guò)“:5000”進(jìn)行訪問(wèn),測(cè)試結(jié)果如圖所示。2.生成響應(yīng)

2.6.Flask的藍(lán)圖

隨著Flask項(xiàng)目的規(guī)模逐漸擴(kuò)大,對(duì)程序進(jìn)行模塊化的處理顯得尤為重要。幸運(yùn)的是,F(xiàn)lask內(nèi)置了一個(gè)強(qiáng)大的模塊化處理工具——藍(lán)圖(Blueprint)。通過(guò)藍(lán)圖,開發(fā)者能夠?qū)⒋笮蛻?yīng)用拆分成更小、更易于管理的模塊,從而實(shí)現(xiàn)應(yīng)用的模塊化。Flask的藍(lán)圖應(yīng)用場(chǎng)景主要聚焦于構(gòu)建大型、復(fù)雜的Flask應(yīng)用、API開發(fā)、插件化開發(fā)等。

下面我們將通過(guò)一個(gè)“用戶管理”案例來(lái)展示其實(shí)際應(yīng)用。在這個(gè)案例中,我們利用藍(lán)圖將程序劃分為了管理員和普通用戶兩個(gè)獨(dú)立運(yùn)行的模塊。使用藍(lán)圖前后的程序結(jié)構(gòu)對(duì)比。

2.6.Flask的藍(lán)圖

在圖(a)中,由于沒(méi)有使用藍(lán)圖,所有視圖函數(shù)都集中在app.py文件中,這不僅使得程序的開發(fā)過(guò)程變得煩瑣,也給后續(xù)的運(yùn)維工作帶來(lái)了諸多不便。然而,在圖(b)中,程序通過(guò)注冊(cè)兩個(gè)藍(lán)圖——普通用戶藍(lán)圖和管理員藍(lán)圖,實(shí)現(xiàn)d了功能的模塊化劃分,從而有效地優(yōu)化了程序結(jié)構(gòu),使開發(fā)更為清晰有序,同時(shí)也方便了后續(xù)的維護(hù)和擴(kuò)展。

2.6.Flask的藍(lán)圖

接下來(lái),我們將借助藍(lán)圖來(lái)開發(fā)圖(b)中展示的案例,請(qǐng)參考如下步驟。

2.6.Flask的藍(lán)圖1.創(chuàng)建藍(lán)圖Flask提供了Blueprint類,可使用其構(gòu)造方法創(chuàng)建藍(lán)圖,Blueprint類的構(gòu)造方法的語(yǔ)法如下所示。blueprint_name=Blueprint('blueprint_name',__name__)上述構(gòu)造方法中常用參數(shù)的含義如下。blueprint_name是藍(lán)圖的名稱,用于在應(yīng)用內(nèi)部唯一標(biāo)識(shí)藍(lán)圖;__name__是當(dāng)前模塊的名稱,用于定位資源文件。

2.6.Flask的藍(lán)圖1.創(chuàng)建藍(lán)圖admin.py文件的代碼如下所示:fromflaskimportBlueprint#創(chuàng)建藍(lán)圖admin_blueprint=Blueprint("admin",__name__)#注冊(cè)路由@admin_blueprint.route('/register')defregister():return'管理員注冊(cè)操作!'#登錄路由@admin_blueprint.route('/login')deflogin():return'管理員登錄操作!'

2.6.Flask的藍(lán)圖1.創(chuàng)建藍(lán)圖user.py文件的代碼如下所示:fromfla

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論