版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
項目1搭建“古典文學(xué)網(wǎng)”的開發(fā)環(huán)境XXX202X-XX-XX
目錄02.任務(wù)1:搭建項目后端開發(fā)環(huán)境05.任務(wù)4:開發(fā)“hivue”前端項目03.任務(wù)2:開發(fā)“hiflask”后端項目04.任務(wù)3:開發(fā)“hiflask”后端項目01.知識儲備:全棧開發(fā)技術(shù)06.拓展任務(wù)
學(xué)習(xí)目標(biāo)知識目標(biāo):
了解“古典文學(xué)網(wǎng)”項目需求,掌握其功能結(jié)構(gòu)與設(shè)計理念;
了解“全棧開發(fā)”概念與特點,掌握其開發(fā)理念,并靈活運用于實踐中;
了解“前后端分離技術(shù)”的原理與優(yōu)勢,掌握其技術(shù)棧及實際運用。能力目標(biāo):
通過學(xué)習(xí)“古典文學(xué)網(wǎng)”后端技術(shù),能熟練搭建后端開發(fā)環(huán)境;
通過學(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)隊精神,遵守職業(yè)道德。01項目描述
1.1.項目需求老袁對“古典文學(xué)網(wǎng)”項目進(jìn)行了如下介紹:該項目是一個專注于高品質(zhì)古典文學(xué)的在線閱讀與交流平臺,旨在推動中華文化的傳承與發(fā)展。在這個平臺上,用戶可以欣賞到豐富的古典文學(xué)作品,參與書評討論,并管理自己的個人中心。該項目采用全棧開發(fā)方式,運用前后端分離技術(shù)架構(gòu),使用Python、Flask、Vue.js、ElementPlus和MySQL等技術(shù)進(jìn)行開發(fā),旨在為用戶提供一款功能強(qiáng)大、界面友好的Web應(yīng)用。
1.2.項目WBS工作分解結(jié)構(gòu)圖小白認(rèn)真聽取了老袁對“古典文學(xué)網(wǎng)”項目的詳細(xì)介紹,并結(jié)合項目需求文檔,精心繪制了“古典文學(xué)網(wǎng)”項目的WBS工作分解結(jié)構(gòu)圖,如圖所示。02知識儲備
2.知識儲備在“古典文學(xué)網(wǎng)”項目正式開發(fā)之前,老袁指導(dǎo)小白先初步了解項目所采用的技術(shù)框架,包括全棧開發(fā)、前后端分離技術(shù)等。
2.1.全棧開發(fā)
全棧開發(fā)是一種能提升開發(fā)效率和軟件質(zhì)量的開發(fā)模式。這種開發(fā)模式,需要開發(fā)人員具備多元化的技能和實踐經(jīng)驗,能獨立承擔(dān)開發(fā)一個應(yīng)用程序的全部工作,涵蓋前端開發(fā)與后端開發(fā)、數(shù)據(jù)庫管理以及系統(tǒng)架構(gòu)設(shè)計等多個方面。全棧開發(fā)人員應(yīng)熟練掌握HTML、CSS、JavaScript等前端技術(shù),同時還應(yīng)了解后端語言如Python、Node.js、Ruby等,并對數(shù)據(jù)庫管理、系統(tǒng)設(shè)計以及性能優(yōu)化等領(lǐng)域有所涉獵。
全棧開發(fā)的優(yōu)勢在于,它能提升開發(fā)效率和軟件質(zhì)量,同時降低溝通和協(xié)調(diào)成本。因為全棧開發(fā)人員具備全面的技能,所以他們能更深入地理解和掌握項目的整體架構(gòu)和細(xì)節(jié),從而更有效地完成開發(fā)工作。
2.2.前后端分離技術(shù)前后端分離技術(shù)是一種應(yīng)用程序架構(gòu)模式,它將前端(用戶界面)和后端(服務(wù)器端)的開發(fā)任務(wù)明確區(qū)分,并通過預(yù)先定義的接口進(jìn)行通信。這種架構(gòu)模式的實施,使得前端和后端開發(fā)團(tuán)隊能夠獨立進(jìn)行開發(fā)、測試和部署工作,從而極大地提高了軟件開發(fā)的效率和質(zhì)量。在前后端分離架構(gòu)中,前端團(tuán)隊主要負(fù)責(zé)呈現(xiàn)數(shù)據(jù)以及實現(xiàn)用戶交互,而后端團(tuán)隊則專注于處理業(yè)務(wù)邏輯和數(shù)據(jù)存儲。前端團(tuán)隊可以利用各種前端技術(shù)和框架,創(chuàng)造出豐富、動態(tài)的用戶界面,為用戶提供流暢、直觀的使用體驗。同時,后端團(tuán)隊則可以利用后端技術(shù)和數(shù)據(jù)庫管理系統(tǒng),實現(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的簡介Python是由荷蘭計算機(jī)科學(xué)家吉多范羅蘇姆(GuidovanRossum)于1989年首次開發(fā)的編程語言,最初被設(shè)計為一種簡單易學(xué)的腳本語言,主要用于編寫自動化腳本。然而,隨著計算機(jī)科學(xué)的不斷發(fā)展,Python也逐步演變成為一種功能全面、用途廣泛的編程語言。Python的應(yīng)用領(lǐng)域非常廣泛,無論是Web開發(fā)、數(shù)據(jù)科學(xué)、人工智能、機(jī)器學(xué)習(xí),還是網(wǎng)絡(luò)爬蟲、系統(tǒng)自動化、游戲開發(fā)等領(lǐng)域,Python都發(fā)揮著重要的作用。Python的豐富庫和框架,如Django、Flask、Pandas、NumPy、TensorFlow等,為開發(fā)者提供了強(qiáng)大的工具,使得Python成為許多領(lǐng)域的首選語言。Python語言的Logo圖標(biāo)如圖所示。
pip包管理工具pip是Python的包管理工具,它提供了查找、下載、安裝和卸載Python包的功能。自Python3.4+版本起,pip包管理工具已經(jīng)被集成到Python中,使得在線安裝依賴庫變得非常方便。在Windows系統(tǒng)中,我們可以通過“命令行窗口”直接執(zhí)行pip命令,或者在VisualStudioCode的終端窗口中執(zhí)行。這使得在開發(fā)過程中管理Python包變得更加高效和便捷。
pip包管理工具
2.4.Flask框架Flask框架的簡介Flask框架是一個用Python語言編寫的輕量級Web應(yīng)用框架(Microframework),它適合各種規(guī)模的Web項目,無論是小型個人網(wǎng)站還是大型企業(yè)級應(yīng)用。此外,F(xiàn)lask框架的強(qiáng)大插件庫為用戶提供了實現(xiàn)個性化網(wǎng)站定制的可能性,使其非常適用于快速開發(fā)功能強(qiáng)大的Web應(yīng)用程序和Web服務(wù)API。Flask框架的Logo圖標(biāo)如圖所示。
2.4.Flask框架Flask框架的特點(1)輕量級和靈活Flask是一個輕量級的Web應(yīng)用框架,它只包含核心功能,如路由、模板渲染等。這使得Flask非常靈活,開發(fā)者可以根據(jù)自己的需求自由添加和配置所需的功能。(2)易于擴(kuò)展Flask采用擴(kuò)展機(jī)制,開發(fā)者可以通過添加擴(kuò)展來擴(kuò)展其功能。Flask擁有強(qiáng)大的插件庫,這些插件可以為Flask添加各種功能,如數(shù)據(jù)庫管理、表單驗證、用戶認(rèn)證等。(3)簡潔的APIFlask的API非常簡潔和易于理解,這使得開發(fā)者能夠更快速地學(xué)習(xí)和使用Flask。同時,簡潔的API也減少了開發(fā)者的學(xué)習(xí)成本和維護(hù)成本。(4)適用于各種應(yīng)用Flask適用于各種規(guī)模和應(yīng)用類型的Web項目,它的靈活性和可擴(kuò)展性使得它能夠應(yīng)對各種復(fù)雜場景。
2.5.MySQL數(shù)據(jù)庫MySQL數(shù)據(jù)庫是一個開源的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS),它最初由瑞典的MySQLAB公司開發(fā),而現(xiàn)在它是甲骨文公司(OracleCorporation)的一部分。由于其強(qiáng)大的性能和靈活性,MySQL已經(jīng)成為最受歡迎的開源關(guān)系型數(shù)據(jù)庫之一。MySQL數(shù)據(jù)庫的Logo圖標(biāo)如圖所示。
2.5.MySQL數(shù)據(jù)庫MySQL支持多個操作系統(tǒng),包括Linux、Windows、macOS等,因此它可以在各種不同的環(huán)境中運行。MySQL提供了高效、可靠、穩(wěn)定的數(shù)據(jù)存儲和管理服務(wù)。這使得它成為Web應(yīng)用程序、企業(yè)應(yīng)用程序和移動應(yīng)用程序等領(lǐng)域的理想選擇。
2.6.Vue開發(fā)技術(shù)Vue框架的簡介Vue框架是一個構(gòu)建用戶界面的漸進(jìn)式JavaScript框架,它的設(shè)計理念使得開發(fā)者可以靈活地將其應(yīng)用于各種規(guī)模和復(fù)雜度的項目中。與其他大型框架不同,Vue被設(shè)計為可以自底向上逐層應(yīng)用,這意味著開發(fā)者可以根據(jù)項目的實際需求逐步引入Vue的功能,從而實現(xiàn)平滑的過渡和擴(kuò)展。Vue框架的Logo圖標(biāo)如圖所示。
2.6.Vue開發(fā)技術(shù)Vue框架的簡介Vue框架的核心庫專注于視圖層,這使得它易于上手,同時也便于與第三方庫或已有項目整合。無論是簡單的靜態(tài)頁面還是復(fù)雜的單頁應(yīng)用,Vue框架都能提供靈活而高效的解決方案。
2.6.Vue開發(fā)技術(shù)Vue框架的特點(1)輕量級與簡單易學(xué)Vue的核心庫專注于視圖層,使得它相比于其他大型框架更為輕量級。同時,Vue采用了簡潔的API設(shè)計,使得開發(fā)者可以快速上手并掌握其使用。(2)組件化開發(fā)Vue通過組件化的開發(fā)方式,將頁面拆分為多個獨立的組件,每個組件負(fù)責(zé)自己的邏輯和樣式。組件間可以相互嵌套,使得開發(fā)者能夠構(gòu)建出復(fù)雜且富有層次感的界面。(3)響應(yīng)式數(shù)據(jù)綁定Vue使用了響應(yīng)式的數(shù)據(jù)綁定機(jī)制,當(dāng)數(shù)據(jù)發(fā)生變化時,頁面會自動更新以反映最新的數(shù)據(jù)狀態(tài)。這種機(jī)制使得開發(fā)者無須手動操作DOM,大大簡化了開發(fā)過程。03項目任務(wù)
3.1.搭建項目后端開發(fā)環(huán)境在項目的后端開發(fā)中,我們采用了Python語言、Flask框架、VisualStudioCode開發(fā)工具以及MySQL數(shù)據(jù)庫等核心技術(shù)。在正式搭建開發(fā)環(huán)境之前,我們必須先確認(rèn)項目電腦所使用的操作系統(tǒng)的版本,以確保兼容性和穩(wěn)定性(本項目使用Windows64位操作系統(tǒng))。隨后,我們需下載與之兼容的開發(fā)工具。需求描述:
3.1.搭建項目后端開發(fā)環(huán)境任務(wù)步驟:1.安裝Python開發(fā)環(huán)境2.安裝Flask框架及擴(kuò)展包3.安裝VisualStudioCode開發(fā)工具4.安裝MySQL數(shù)據(jù)庫
3.1.搭建項目后端開發(fā)環(huán)境1.安裝Python開發(fā)環(huán)境安裝Python語言環(huán)境,需要下載Python安裝包。我們通過瀏覽器訪問其官方網(wǎng)站,選擇適合自己操作系統(tǒng)版本的Python安裝包,如圖所示。(1)下載Python安裝包
3.1.搭建項目后端開發(fā)環(huán)境下載Python安裝包后,接下來進(jìn)行安裝。首先,使用鼠標(biāo)左鍵雙擊下載的Python安裝包,這將啟動安裝程序。安裝程序通常會顯示一個圖形界面,其中包含幾個步驟來引導(dǎo)用戶完成安裝過程,如圖所示。1.安裝Python開發(fā)環(huán)境(2)安裝Python
3.1.搭建項目后端開發(fā)環(huán)境在上述界面勾選“Useadminprivilegeswheninstallingpy.exe”和“Addpython.exetoPATH”兩項,并單擊“Customizeinstallation”鏈接,按引導(dǎo)提示進(jìn)行自定義安裝,進(jìn)入高級選項界面,如圖所示。在上述的安裝界面,勾選圖示中的選項,并選中Python安裝目錄(請勿安裝在ProgramFiles目錄下)。單擊“Install”按鈕,完成安裝。1.安裝Python開發(fā)環(huán)境(2)安裝Python
3.1.搭建項目后端開發(fā)環(huán)境首先,按下鍵盤上的Win+R快捷鍵,這將打開“運行”對話框。在對話框中,輸入cmd命令,并單擊“確定”或按回車鍵,以打開命令行窗口。接下來,在命令行窗口中,輸入python命令,并按回車鍵,將顯示Python的版本信息,即表示已經(jīng)安裝成功,如圖所示。1.安裝Python開發(fā)環(huán)境(3)驗證Python
3.1.搭建項目后端開發(fā)環(huán)境由于一些客觀原因,使用Python的pip包管理工具下載第三方庫時速度很慢,這時可以使用鏡像下載,提高下載速度。請在命令行窗口中輸入以下命令,并按下“回車鍵”后,完成鏡像的安裝。pipconfigsetglobal.index-url
/pypi/simple1.安裝Python開發(fā)環(huán)境(3)驗證Python
3.1.搭建項目后端開發(fā)環(huán)境2.安裝Flask框架及擴(kuò)展包在進(jìn)行項目的后端開發(fā)時,我們使用Flask框架作為主要開發(fā)技術(shù)。為此我們需要使用pip工具來安裝Flask框架及相關(guān)擴(kuò)展庫。以下是在本項目中使用到的相關(guān)庫及其安裝命令的列表。
3.1.搭建項目后端開發(fā)環(huán)境安裝Flask框架為例在此處,我們以安裝Flask框架為例,展示如何使用pip工具安裝Flask框架。首先,打開命令行窗口,在命令行窗口中,輸入以下指令來安裝Flask框架。pipinstallflask按下“回車鍵”后,pip將開始從Python軟件包索引(PyPI)下載并安裝Flask框架。2.安裝Flask框架及擴(kuò)展包
3.1.搭建項目后端開發(fā)環(huán)境3.安裝VisualStudioCode開發(fā)工具安裝VisualStudioCode(VSCode)開發(fā)工具,需要下載其安裝包。我們通過瀏覽器訪問VSCode的官方網(wǎng)站。在官方網(wǎng)站上,選擇相應(yīng)的VSCode安裝包進(jìn)行下載,如圖所示。(1)下載VSCode安裝包
3.1.搭建項目后端開發(fā)環(huán)境下載VSCode安裝包后,接下來進(jìn)行安裝。首先,使用鼠標(biāo)左鍵雙擊下載的VSCode安裝包。這通常會啟動安裝向?qū)?,引?dǎo)我們完成安裝過程。VSCode的操作界面如圖所示。3.安裝VisualStudioCode開發(fā)工具(1)下載VSCode安裝包
3.1.搭建項目后端開發(fā)環(huán)境為了進(jìn)行項目開發(fā),我們還需要安裝一些支持Python的擴(kuò)展插件。這些插件可以增強(qiáng)VSCode的功能,使其更好地支持Python語言。請按照以下步驟安裝相關(guān)擴(kuò)展插件:①
打開VSCode,單擊左側(cè)邊欄的擴(kuò)展圖標(biāo)(快捷鍵Ctrl+Shift+X)打開擴(kuò)展面板。②
在搜索框中輸入插件名稱,然后在搜索結(jié)果中找到對應(yīng)插件。③
單擊插件旁邊的“Install”按鈕來安裝插件。3.安裝VisualStudioCode開發(fā)工具(2)VSCode擴(kuò)展插件安裝
3.1.搭建項目后端開發(fā)環(huán)境3.安裝VisualStudioCode開發(fā)工具表1.3后端項目所使用到的VSCode擴(kuò)展庫
3.1.搭建項目后端開發(fā)環(huán)境我們通過瀏覽器訪問MySQL的官方網(wǎng)站。在官方網(wǎng)站上,選擇相應(yīng)的MySQL安裝包進(jìn)行下載,如圖所示。4.安裝MySQL數(shù)據(jù)庫(1)下載MySQL安裝包
3.1.搭建項目后端開發(fā)環(huán)境下載MySQL安裝包后,請使用鼠標(biāo)左鍵雙擊MySQL安裝包。這通常會啟動安裝向?qū)В诎惭b引導(dǎo)界面,我們勾選“Full”選項,安裝MySQL數(shù)據(jù)庫,如圖所示。4.安裝MySQL數(shù)據(jù)庫(2)安裝MySQL數(shù)據(jù)庫
3.1.搭建項目后端開發(fā)環(huán)境當(dāng)我們單擊“Next”按鈕后,安裝程序?qū)㈤_始檢查我們的安裝環(huán)境,如果在檢查安裝環(huán)境的過程中,提示缺少VC庫(VisualC++庫),請先安裝VC庫。單擊“Next”按鈕,進(jìn)入安裝確認(rèn)界面,如圖所示。在上述界面中,單擊“Execute”按鈕后,開始進(jìn)行安裝。4.安裝MySQL數(shù)據(jù)庫(2)安裝MySQL數(shù)據(jù)庫
3.1.搭建項目后端開發(fā)環(huán)境在安裝完成界面,單擊“Next”按鈕后,安裝程序會進(jìn)入MySQL配置界面。在該配置過程中,可以配置MySQL的端口、登錄賬號及密碼等配置信息,請按提示完成安裝。4.安裝MySQL數(shù)據(jù)庫(2)安裝MySQL數(shù)據(jù)庫
3.2.開發(fā)“hiflask”后端項目為了確保開發(fā)環(huán)境能夠正常運行,我們將開發(fā)一個簡單的Flask項目進(jìn)行測試。需求描述:
3.2.開發(fā)“hiflask”后端項目任務(wù)步驟:1.創(chuàng)建“hiflask”項目2.開發(fā)“hiflask”項目3.運行“hiflask”項目
3.2.開發(fā)“hiflask”后端項目1.創(chuàng)建“hiflask”項目首先,在磁盤中新建一個名為“hiflask”的文件夾,作為項目存放目錄。接下來啟動VSCode開發(fā)工具,單擊菜單欄中的“File”選項,然后在下拉菜單中選擇“OpenFolder”命令,打開剛才創(chuàng)建的“hiflask”文件夾,如圖所示。
3.2.開發(fā)“hiflask”后端項目2.開發(fā)“hiflask”項目在“hiflask”項目中,請在VSCode的菜單欄中,單擊“File”菜單,然后在下拉菜單中選擇“NewFile...”子菜單,新建一個名為App.py的文件,并輸入以下代碼:#引入Flask框架fromflaskimportFlask#創(chuàng)建Flask框架引用app=Flask(__name__)#定義一個請求方法,用于輸出文字@app.route("/")defhello_flask():
return"HelloFlask"#啟動Flask程序if__name__=="__main__":
app.run(debug=True)
3.2.開發(fā)“hiflask”后端項目3.運行“hiflask”項目請打開“App.py”文件,在VSCode菜單欄中,選中“Run”菜單,然后在下拉菜單中選擇“StartDebugging(F5快捷鍵)”子菜單,啟動該項目(選中“PythonFileDebug……”),如圖所示。
3.2.開發(fā)“hiflask”后端項目3.運行“hiflask”項目通過上面的操作,VSCode將啟動“hiflask”項目,并在VSCode的Terminal終端出現(xiàn)如圖所示文字,即啟動成功。
3.2.開發(fā)“hiflask”后端項目運行“hiflask”項目在瀏覽器中輸入上圖中紅框部分的URL,即可查看運行效果,如圖所示。注意:在Terminal終端,可通過快捷鍵Ctrl+C,可以停止項目運行。
3.3.搭建項目前端開發(fā)環(huán)境在前端開發(fā)中,我們采用了Note.js、Vue.js、Postman等開發(fā)工具。在正式搭建開發(fā)環(huán)境之時,我們需下載與電腦操作系統(tǒng)兼容的開發(fā)工具。需求描述:
3.3.搭建項目前端開發(fā)環(huán)境任務(wù)步驟:1.安裝Note.js環(huán)境2.安裝Vue開發(fā)插件3.安裝Postman開發(fā)工具
3.3.搭建項目前端開發(fā)環(huán)境1.安裝Note.js環(huán)境安裝Vue.js框架,需要下載Note.js安裝包。我們通過瀏覽器訪問Node.js的官方網(wǎng)站,選擇相應(yīng)的Node.js安裝包進(jìn)行下載,如圖所示。下載Node.js安裝包后,使用鼠標(biāo)左鍵雙擊Node.js安裝包,啟動安裝向?qū)В龑?dǎo)我們完成安裝。
3.3.搭建項目前端開發(fā)環(huán)境1.安裝Note.js環(huán)境Node.js安裝完成后,打開命令行窗口,輸入“node–v”命令,并按回車鍵。如果Node.js已經(jīng)成功安裝,會出現(xiàn)Node.js的版本信息,如圖所示。
3.3.搭建項目前端開發(fā)環(huán)境1.安裝Note.js環(huán)境在進(jìn)行Vue程序開發(fā)時,經(jīng)常會使用到npm(NodePackageManager)包管理工具,用于安裝、更新和管理Node.js的各種模塊和包。但是由于一些客觀原因,使用npm包工具下載模塊和包速度很慢,這時可以使用“cnpm”(中國鏡像的npm)包管理工具代替“npm”。打開命令行窗口,在命令行窗口中輸入以下命令,并按下回車鍵后,完成鏡像的安裝。npminstall-gcnpm--registry=在后續(xù)的項目開發(fā)過程中,就可以使用它來安裝和管理Node.js項目的依賴包。cnpm的使用方式和npm的是一樣的,只需將npm的命令換成是cnpm就可以了。
3.3.搭建項目前端開發(fā)環(huán)境2.安裝Vue開發(fā)插件Vue官方推薦使用的集成開發(fā)環(huán)境(IDE)是VisualStudioCode(VSCode),并建議配合Vue語言特性插件Vue-Official使用。我們需要在VSCode中安裝一系列擴(kuò)展插件,具體安裝步驟參考本項目中“1.3.1.搭建項目后端開發(fā)環(huán)境”小節(jié)中的“VSCode擴(kuò)展插件安裝”內(nèi)容。
3.3.搭建項目前端開發(fā)環(huán)境3.安裝Postman開發(fā)工具在開發(fā)“古典文學(xué)網(wǎng)”項目時,前后端采用API接口的方式進(jìn)行數(shù)據(jù)交互。為此,我們選擇了Postman測試工具進(jìn)行后端API接口測試。我們通過瀏覽器訪問Postman的官方網(wǎng)站,選擇相應(yīng)的Postman安裝包進(jìn)行下載,如圖所示。
3.3.搭建項目前端開發(fā)環(huán)境3.安裝Postman開發(fā)工具下載Postman安裝包后,請使用鼠標(biāo)左鍵雙擊Postman安裝包,通過安裝向?qū)?,引?dǎo)我們完成安裝。首次使用Postman時,我們需要注冊一個賬號,并使用賬號登錄后,即可使用其全部功能。Postman的操作界面,如圖所示。
3.4.開發(fā)“hivue”前端項目現(xiàn)在,我們已經(jīng)搭建好“古典文學(xué)網(wǎng)”項目的前端開發(fā)環(huán)境,接下來將開發(fā)一個簡單的Vue項目進(jìn)行測試。需求描述:
3.4.開發(fā)“hivue”前端項目任務(wù)步驟:1.創(chuàng)建“hivue”項目2.開發(fā)“hivue”項目3.運行“hivue”項目
3.4.開發(fā)“hivue”前端項目1.創(chuàng)建“hivue”項目首先,確保我們安裝了最新版本的Node.js,并確定項目工作目錄。打開命令行窗口,通過cd命令進(jìn)入項目工作目錄,然后輸入以下命令,并按回車鍵。cnpmcreatevue@latest
3.4.開發(fā)“hivue”前端項目1.創(chuàng)建“hivue”項目該命令將會創(chuàng)建一個Vue項目。在此過程中,我們將會看到一些諸如TypeScript和測試支持之類的可選功能提示,可通過左右選擇按鍵選擇是否引入可選功能,按下回車鍵確認(rèn),如圖所示。
3.4.開發(fā)“hivue”前端項目2.開發(fā)“hivue”項目啟動VSCode開發(fā)工具,打開剛才創(chuàng)建的“hivue”項目。如圖所示。
3.4.開發(fā)“hivue”前端項目2.開發(fā)“hivue”項目打開“hivue”項目后,需要在VSCode里面進(jìn)行換行符(eol)配置。單擊左側(cè)邊欄的設(shè)置圖標(biāo)
打開設(shè)置面板,在搜索框輸入eol關(guān)鍵字,將其配置為“\n”。如圖所示。
3.4.開發(fā)“hivue”前端項目3.運行“hivue”項目首先,在VSCode單擊菜單欄中的“Terminal”選項,接著在下拉菜單中選擇“NewTerminal”命令,以打開一個新的Terminal終端窗口(確保在項目的根目錄下打開Terminal)。然后,在Terminal終端窗口中,輸入并運行以下的啟動指令,即可啟動“hivue”應(yīng)用。cnpminstallcnpmrundev
3.4.開發(fā)“hivue”前端項目3.運行“hivue”項目通過上面的操作,VSCode將啟動“hivue”項目,并在VSCode的Terminal終端出現(xiàn)如圖所示文字,即啟動成功。
3.4.開發(fā)“hivue”前端項目3.運行“hivue”項目在瀏覽器中輸入上圖中紅框部分的URL,即可查看運行效果,如圖所示。
3.4.開發(fā)“hivue”前端項目3.運行“hivue”項目注意:在VSCode的Terminal終端中首次嘗試運行cnpm命令時,可能會遇到“cnpm無法加載文件……”之類的錯誤提示。為了解決這個問題,我們需要以管理員身份運行“WindowsPowerShell”命令行窗口,并在其中執(zhí)行以下指令,將腳本的執(zhí)行策略設(shè)置為“RemoteSigned”。set-ExecutionPolicyRemoteSigned04項目總結(jié)
4.項目總結(jié)在老袁的指導(dǎo)下,小白學(xué)習(xí)了“古典文學(xué)網(wǎng)”項目的技術(shù)框架和知識。他努力搭建了完整的前后端開發(fā)環(huán)境,更深入地理解了技術(shù)架構(gòu)和技術(shù)棧,并能運用到實際開發(fā)中。這個重要的成果為項目的順利推進(jìn)打下了基礎(chǔ)。我們期待小白在未來工作中表現(xiàn)出色,為項目成功貢獻(xiàn)力量。05拓展任務(wù)
5.拓展任務(wù)我們也幸運地加入一家軟件公司,需要開發(fā)一個名為“紅影賞析”的項目?,F(xiàn)在我們需要和小白一樣完成該項目的開發(fā)。請完成以下項目任務(wù)。
5.1.繪制“紅影賞析”項目的WBS工作分解結(jié)構(gòu)圖項目簡介:“紅影賞析”項目是一個專注于高品質(zhì)紅色電影的在線瀏覽與交流平臺,其主要目標(biāo)是推動紅色精神的廣泛傳承與發(fā)展。在該項目中,用戶將能夠欣賞到豐富多樣的紅色電影作品,并參與熱情洋溢的影評討論,同時還能輕松管理自己的個人中心。請參考“古典文學(xué)網(wǎng)”項目,繪制出“紅影賞析”項目的WBS工作分解結(jié)構(gòu)圖,可參考下圖圖。需求描述:
5.2.搭建PythonWeb開發(fā)環(huán)境請搭建“紅影賞析”項目的前后端開發(fā)環(huán)境,以確保自己順利地完成這項任務(wù),為“紅影賞析”項目的后續(xù)開發(fā)打下堅實的基礎(chǔ)。需求描述:謝謝項目2:“古典文學(xué)網(wǎng)”后端框架解析與開發(fā)
目錄01.06.拓展任務(wù)02.知識儲備04.技能拓展項目描述03.項目任務(wù)05.項目總結(jié)
學(xué)習(xí)目標(biāo)知識目標(biāo):了解Flask項目結(jié)構(gòu)及特點,掌握Flask項目的整體框架結(jié)構(gòu);熟悉Flask的請求和響應(yīng),掌握如何處理請求并返回響應(yīng);熟悉Flask的路由和藍(lán)圖,掌握項目模塊化開發(fā)的理念及應(yīng)用。能力目標(biāo):通過學(xué)習(xí)Flask項目結(jié)構(gòu),能夠開發(fā)“古典文學(xué)網(wǎng)”的后端項目框架;通過學(xué)習(xí)Flask的請求和響應(yīng),能夠開發(fā)“注冊”“登錄”API接口;通過學(xué)習(xí)Flask的路由和藍(lán)圖,能夠模塊化管理項目中的程序路由。素質(zhì)目標(biāo):培養(yǎng)軟件工程師的系統(tǒng)思維,嚴(yán)格遵守行業(yè)規(guī)范和標(biāo)準(zhǔn),提高軟件質(zhì)量和可靠性;培養(yǎng)軟件工程師的責(zé)任感、職業(yè)精神和團(tuán)隊精神,遵守職業(yè)道德。01項目描述
1.項目描述
小白已經(jīng)搭建了“古典文學(xué)網(wǎng)”項目的開發(fā)環(huán)境,接下來他計劃對Flask框架技術(shù)進(jìn)行深入研究,以設(shè)計出后端項目的整體架構(gòu),并基于這一框架,順利完成項目的“注冊”“登錄”API接口的開發(fā),為項目的順利推進(jìn)奠定堅實基礎(chǔ)。02知識儲備
2.知識儲備
為了項目的順利開發(fā),小白需要系統(tǒng)地學(xué)習(xí)Flask框架的項目布局,掌握Flask框架的核心技術(shù),包括路由和藍(lán)圖等關(guān)鍵組件,為后續(xù)的編碼工作做好了充分的準(zhǔn)備。
2.1.Flask程序框架解析1.Flask項目框架
Flask作為一款高度靈活且輕量級的Web框架,其項目結(jié)構(gòu)并不拘泥于固定的模式,而是賦予了開發(fā)者充分的自由,允許他們根據(jù)自己的喜好進(jìn)行設(shè)計。以下展示的是一個典型的Flask項目框架布局,然而在實際應(yīng)用中,項目的具體結(jié)構(gòu)可能會因項目的獨特需求以及團(tuán)隊的個性化偏好而有所差異。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項目框架項目布局中的一些關(guān)鍵目錄及文件,具體如表所示。目錄/文件說明app/一個包含應(yīng)用代碼和文件的Python包app/api/一個存放后端Api接口的Python包,包括路由定義、數(shù)據(jù)處理等app/templates/用于存放HTML模板的文件夾。這些模板用于渲染視圖app/static/用于存放靜態(tài)文件的文件夾,如CSS、JavaScript、圖片等app/models.py一個用于定義數(shù)據(jù)庫模型的源文件app/views.py一個用于定義視圖函數(shù)的源文件,處理請求并返回響應(yīng)app/__init.py__一個用于初始化Flask應(yīng)用的源文件,并導(dǎo)入其他模塊tests/一個包含測試模塊的文件夾venv/Python虛擬環(huán)境,用于安裝Flask和其他依賴的包app.py一個項目程序入口源文件,用于啟動項目
2.1.Flask程序框架解析2.Flask應(yīng)用設(shè)置創(chuàng)建Flask應(yīng)用時,最簡單的方法是開始時就初始化一個全局的Flask實例。但項目變大變復(fù)雜后,這方法可能不夠用。所以,我們可以在函數(shù)里創(chuàng)建Flask實例,這樣的函數(shù)叫“應(yīng)用工廠”。在應(yīng)用工廠里,我們完成應(yīng)用的配置、注冊等設(shè)置,然后返回實例。這樣做讓代碼更易維護(hù)、靈活,項目結(jié)構(gòu)也更清晰和模塊化。
2.1.Flask程序框架解析(1)創(chuàng)建應(yīng)用工廠在app/__init__.py源文件中,我們定義了應(yīng)用工廠函數(shù),其代碼實現(xiàn)如下:fromflaskimportFlaskdefcreate_app():#構(gòu)建appapp=Flask(__name__)returnapp在上述代碼中,我們定義了一個應(yīng)用工廠函數(shù)create_app(),在后續(xù)的項目開發(fā)中,它能夠執(zhí)行一系列關(guān)鍵操作,如創(chuàng)建Flask實例、加載配置文件以及注冊藍(lán)圖等。2.Flask應(yīng)用設(shè)置
2.1.Flask程序框架解析(2)運行應(yīng)用接下來,在app.py文件中,可通過create_app()函數(shù)來創(chuàng)建Flask實例。參考代碼實現(xiàn)如下:#引入應(yīng)用工廠函數(shù)fromappimportcreate_app#調(diào)用工廠,創(chuàng)建appapp=create_app()#一個輸出hello的方法@app.route('/')defhello(): return'Hello,World!'#啟動Flask程序if__name__=="__main__":app.run()在上述代碼中,我們通過app=create_app()
代碼創(chuàng)建了一個Flask實例app。2.Flask應(yīng)用設(shè)置
2.2.Flask的路由
在Flask應(yīng)用中,路由就是連接用戶請求的URL和視圖函數(shù)的方式。Flask會根據(jù)HTTP請求的URL在路由表中找到匹配的規(guī)則,然后調(diào)用相應(yīng)的視圖函數(shù),并把結(jié)果返回給用戶。
2.2.Flask的路由1.注冊路由
Flask使用route()裝飾器或add_url_rule()函數(shù)來創(chuàng)建URL規(guī)則,將函數(shù)綁定到URL上,實現(xiàn)路由的注冊。一旦路由被注冊,當(dāng)用戶訪問相應(yīng)的URL時,就會觸發(fā)對應(yīng)的視圖函數(shù),并返回該函數(shù)的結(jié)果作為響應(yīng)。
2.2.Flask的路由(1)route()裝飾器注冊路由
在Flask中,route()裝飾器的語法相對簡單且直觀。它用于將一個URL路徑映射到一個視圖函數(shù)上。以下是route()裝飾器的基本語法:@app.route(path,methods=['GET','POST',...],**options)defview_function():#函數(shù)體returnresponse1.注冊路由
2.2.Flask的路由route()裝飾器中參數(shù)含義如下:path:必選參數(shù),一個字符串,表示URL路徑模式。該字符串必須以“/”開頭;methods:可選參數(shù),包含HTTP方法的列表,指定HTTP請求方法,默認(rèn)為['GET'];**options:可選參數(shù),用于進(jìn)一步定制路由的行為。1.注冊路由
2.2.Flask的路由
接下來,我們將展示如何使用route()裝飾器來注冊路由,實現(xiàn)視圖函數(shù)與URL之間的映射。以下代碼定義了一個register()函數(shù),用以輸出一段文字。fromflaskimportFlaskapp=Flask(__name__)#通過route()方法注冊路由,URL規(guī)則為:/register@app.route('/register',methods=['POST'])defregister():return'這是register()函數(shù)!'#啟動Flask程序if__name__=="__main__":app.run()1.注冊路由
上述代碼中,我們定義了一個名為register()的視圖函數(shù),然后使用裝飾器@app.route('/register',methods=['POST'])注冊路由,將URL“/register”與視圖函數(shù)register()進(jìn)行映射關(guān)聯(lián),HTTP請求方法為POST。
2.2.Flask的路由
項目啟動后,我們使用Postman測試工具對其進(jìn)行測試,訪問的URL為“:5000/register”,測試結(jié)果如圖所示。1.注冊路由
2.2.Flask的路由(2)add_url_rule()函數(shù)注冊路由
在Flask中,add_url_rule()函數(shù)是另一種注冊路由的方式,它提供了更多的靈活性和控制。該函數(shù)通常用于在創(chuàng)建Flask應(yīng)用實例后動態(tài)地添加路由規(guī)則。下面是add_url_rule()函數(shù)的基本語法:app.add_url_rule(rule,endpoint=None,view_func=None,methods=None,
strict_slashes=None,**options)1.注冊路由
2.2.Flask的路由add_url_rule()函數(shù)中參數(shù)含義如下:rule:必選參數(shù),一個字符串,表示URL規(guī)則;endpoint:可選參數(shù),與視圖函數(shù)相關(guān)聯(lián)的端點名;view_func:可選參數(shù),當(dāng)URL被請求時調(diào)用的視圖函數(shù)。methods:可選參數(shù),包含HTTP方法的列表,指定HTTP請求方法,默認(rèn)為['GET'];strict_slashes:可選參數(shù),如果為True,則URL必須是嚴(yán)格的,即如果規(guī)則中有斜杠,則URL中也必須包含斜杠。默認(rèn)為None,意味著使用app的配置值;**options:其他可選參數(shù),用于進(jìn)一步定制路由的行為。1.注冊路由
2.2.Flask的路由下面,我們使用add_url_rule()函數(shù)來注冊路由,代碼參考如下。fromflaskimportFlaskapp=Flask(__name__)deflogin():return'這是login()函數(shù)!'#add_url_rule()方法注冊路由,URL規(guī)則為:/login,視圖函數(shù)為:login()app.add_url_rule(rule="/login",view_func=login)#啟動Flask程序if__name__=="__main__":app.run()1.注冊路由
上述代碼中,我們定義了一個名為login()的視圖函數(shù),然后使用app.add_url_rule()函數(shù)注冊路由,將URL“/login”與視圖函數(shù)login()進(jìn)行映射關(guān)聯(lián),HTTP請求方法默認(rèn)為GET。
2.2.Flask的路由
項目啟動后,我們使用Postman測試工具對其進(jìn)行測試,訪問的URL為“:5000/login”,測試結(jié)果如圖所示。1.注冊路由
2.2.Flask的路由2.變量規(guī)則
為了給URL鏈接增加變量,我們可以定義路由規(guī)則,把變量部分用特定的字段標(biāo)記成<variable_name>,其作為關(guān)鍵字參數(shù)傳遞給關(guān)聯(lián)的視圖函數(shù)。下面這個例子展示了通過URL傳遞變量,并顯示該變量的功能,參考代碼如下所示。fromflaskimportFlaskapp=Flask(__name__)#通過<variable_name>標(biāo)記,傳遞變量,URL規(guī)則為:/user/小白@app.route('/user/<name>',methods=['GET','POST'])defshow_name(name):returnname+'歡迎您!'#啟動Flask程序if__name__=="__main__":app.run()
2.2.Flask的路由2.變量規(guī)則
上述代碼中,我們定義了一個show_name(name)視圖函數(shù),該函數(shù)會接收一個名為name的變量,在“/user/<name>”路由規(guī)則中,通過<name>標(biāo)記傳遞字符串?dāng)?shù)據(jù)給視圖函數(shù),HTTP請求方法為GET和POST。項目啟動后,我們使用Postman測試工具對其進(jìn)行測試,訪問的URL為“:5000/user/小白”,測試結(jié)果如圖所示。
2.2.Flask的路由2.變量規(guī)則
在上面的示例中,我們使用了默認(rèn)的string轉(zhuǎn)換器,傳遞字符串?dāng)?shù)據(jù)。對于其他類型的數(shù)據(jù),我們可以使用<converter:variable_name>標(biāo)記,在URL中選擇性地加上一個轉(zhuǎn)換器,為變量指定規(guī)則。Flask常用的轉(zhuǎn)換器見下表。轉(zhuǎn)換器說明示例string(缺省值)接受任何不包含斜杠的文本route('/user/<name>')int接受正整數(shù)route('/user/<int:num>')float接受正浮點數(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框架中一個非常有用的函數(shù),它用于動態(tài)地構(gòu)建URL。它可以幫助我們生成應(yīng)用程序內(nèi)的URL,并確保URL的正確性和安全性。它接受一個或多個參數(shù),其中第一個參數(shù)通常是視圖函數(shù)的名稱,其他參數(shù)則對應(yīng)于該視圖函數(shù)的路由規(guī)則中的變量。以下是url_for()函數(shù)的基本語法:
url=url_for('視圖函數(shù)名',參數(shù)1=值1,參數(shù)2=值2,...)
url_for()方法中參數(shù)含義如下:“視圖函數(shù)名”是生成URL的視圖函數(shù)的名稱。“參數(shù)1=值1,參數(shù)2=值2,...”是可選參數(shù),對應(yīng)于視圖函數(shù)的路由規(guī)則中的變量。
2.2.Flask的路由3.URL構(gòu)建
接下來,我們將展示如何使用url_for()方法生成視圖函數(shù)的URL的程序。以下是具體的代碼示例:fromflaskimportFlask,url_forapp=Flask(__name__)@app.route('/myindex',methods=['GET','POST'])defindex():return'這是首頁函數(shù)!'#URL構(gòu)建@app.route('/urlfor',methods=['GET'])defurlfor():#生成index視圖函數(shù)的URL
index_url=url_for("index")return"URL構(gòu)建:"+"首頁的url="+index_url#啟動Flask程序if__name__=="__main__":app.run()
2.2.Flask的路由3.URL構(gòu)建
上述代碼中,我們定義了一個index()視圖函數(shù),它的路由是/myindex,同時在urlfor()視圖函數(shù)中利用url_for()方法生成index()視圖函數(shù)的URL。項目啟動后,我們使用Postman測試工具對其進(jìn)行測試,訪問的URL為“:5000/urlfor”,測試結(jié)果如圖所示。
2.3.Flask的請求1.Flask請求方式
在Flask中,處理請求通常涉及接收和解析客戶端發(fā)送的數(shù)據(jù)。Flask支持多種請求方式,其中最常見的是GET和POST請求。除了GET和POST請求,F(xiàn)lask還支持其他HTTP請求方法,如PUT、DELETE等,但它們在Web開發(fā)中的使用相對較少。Flask常見請求方式見下表。請求方式說明GET默認(rèn)的請求方式,通常用于從服務(wù)器獲取資源。POST用于向服務(wù)器提交數(shù)據(jù)或文件,請求的數(shù)據(jù)是隱藏發(fā)送的,因此比GET請求更安全。PUT用于向服務(wù)器上傳或更新資源。DELETE用于請求服務(wù)器刪除指定的資源。
2.3.Flask的請求1.Flask請求方式
在注冊路由時,可以通過methods參數(shù),指定路由的請求方式,以下代碼展示了設(shè)置register()視圖函數(shù)的請求方式為POST請求。#通過route()注冊路由,URL規(guī)則為:/register@app.route('/register',methods=['POST'])defregister():
return'這是register()函數(shù)!'
2.3.Flask的請求2.Flask請求鉤子
在Flask中,請求鉤子(RequestHooks)是一組特殊的函數(shù),它們在請求處理的不同階段被自動調(diào)用。Flask提供了四種請求鉤子,它們可以幫助我們在請求處理流程中執(zhí)行一些必要的操作,比如認(rèn)證、權(quán)限檢查、數(shù)據(jù)庫連接管理等。Flask的常用請求鉤子見下表。命令命令說明before_first_request這個鉤子在整個應(yīng)用程序的生命周期中只會被調(diào)用一次,且在處理第一個請求之前被調(diào)用。它通常用于執(zhí)行一些只需要在應(yīng)用程序啟動時執(zhí)行一次的初始化操作。(Flask2.2及以上版本不再支持該請求鉤子)before_request這個鉤子在每次請求處理之前被調(diào)用。它通常用于執(zhí)行一些每次請求都需要執(zhí)行的操作,比如檢查用戶認(rèn)證狀態(tài)、記錄請求日志等。after_request這個鉤子在視圖函數(shù)處理完請求之后,但在響應(yīng)返回給客戶端之前被調(diào)用。它通常用于執(zhí)行一些后處理操作,比如修改響應(yīng)等。teardown_request這個鉤子在每次請求處理完之后被調(diào)用,無論是否發(fā)生異常。它通常用于執(zhí)行一些清理操作,比如關(guān)閉數(shù)據(jù)庫連接、釋放資源等。
2.3.Flask的請求2.Flask請求鉤子
在Flask程序中,請求鉤子使用裝飾器實現(xiàn),接下來我們編寫代碼模擬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)證,沒有操作權(quán)限!")return"用戶未認(rèn)證,沒有操作權(quán)限!"else:print("用戶已認(rèn)證,擁有操作權(quán)限!")pass
2.3.Flask的請求@app.after_requestdefadd_log(response):#給響應(yīng)添加一些頭信息
print("用戶操作成功,記錄操作信息!")returnresponse@app.teardown_requestdefclose_db_connection(exception):#關(guān)閉數(shù)據(jù)庫連接print("關(guān)閉數(shù)據(jù)庫連接,釋放資源!")pass@app.route('/index',methods=['GET','POST'])defindex():print("歡迎訪問古典文學(xué)網(wǎng)!")return'這是首頁函數(shù)!'#啟動Flask程序if__name__=="__main__":app.run()接上頁2.Flask請求鉤子
2.3.Flask的請求
上述代碼中,我們?yōu)閏heck_auth()函數(shù)添加了before_request請求鉤子,該函數(shù)會在每次請求前被自動執(zhí)行,它的核心功能是通過token的判斷,從而驗證用戶是否具備相應(yīng)的操作權(quán)限。
在程序中,我們?yōu)閠oken設(shè)置不同的值(token=""或token="user"),然后啟動項目。通過訪問“:5000/index”,即可在VSCode的Terminal終端中查看運行結(jié)果。具體的運行效果如圖所示。2.Flask請求鉤子
2.3.Flask的請求3.重新定向
在Flask中,重定向(Redirect)是一種將用戶從當(dāng)前URL導(dǎo)向到另一個URL的機(jī)制。這通常用于在用戶完成某項操作后,將他們導(dǎo)向到另一個頁面,或者當(dāng)用戶嘗試訪問不存在的頁面時,將他們導(dǎo)向到首頁或其他合適的頁面。
在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的請求3.重新定向
在上述代碼中,index()視圖函數(shù)通過redirect()函數(shù)重定向到“/hello”路由。此處使用了url_for()函數(shù)用于動態(tài)地生成“/hello”路由。項目啟動后,可以通過“:5000”進(jìn)行訪問,測試結(jié)果如圖所示。
2.4.Flask上下文
在Flask框架中,上下文(Context)是一個至關(guān)重要的概念。它賦予了開發(fā)者在請求處理過程中便捷地訪問和操作特定對象的能力,如當(dāng)前請求對象、應(yīng)用對象等。
在Flask中,請求上下文扮演著舉足輕重的角色,它主要由request對象和session對象組成。
2.4.Flask上下文1.請求上下文(1)request對象
request對象作為Flask框架中的核心組件,匯聚了HTTP請求的所有關(guān)鍵信息。這些信息包括但不限于請求的URL地址、請求頭部字段、請求所使用的方法(如GET、POST等)、查詢參數(shù)、表單提交的數(shù)據(jù)以及上傳的文件等。request對象的常用屬性和方法已詳細(xì)列于下表。request對象的常用屬性表屬性說明args獲取Url中的請求參數(shù)method獲取請求的HTTP方式cookies獲取包含Cookie名稱和值的字典對象data獲取字符串形式的請求數(shù)據(jù)form獲取解析后的表單數(shù)據(jù)values包含form和args全部內(nèi)容的CombineMultiDictheaders獲取請求user_agent獲取瀏覽器標(biāo)識信息
2.4.Flask上下文request對象的常用方法表方法說明close()關(guān)閉當(dāng)前請求get_data()獲取請求中的數(shù)據(jù)get_json()進(jìn)行JSON解析并返回數(shù)據(jù)make_from_data_parse()創(chuàng)建表單數(shù)據(jù)解析器1.請求上下文
2.4.Flask上下文
接下來,我們將模擬一個登錄程序。這個程序的主要任務(wù)是接收用戶的登錄請求,并獲取用戶輸入的賬號及密碼并輸出。具體代碼如下所示。fromflaskimportFlask,requestapp=Flask(__name__)@app.route('/login',methods=['POST'])deflogin():#獲取登錄賬號及密碼
uname=request.form.get("uname")upwd=request.form.get("upwd")return'您的登錄賬號:'+uname+",密碼:"+upwd#啟動Flask程序if__name__=="__main__":app.run()1.請求上下文
在上述代碼中,我們定義了login()視圖函數(shù),模擬用戶登錄。在該函數(shù)中,通過request.form屬性來解析用戶提交的表單數(shù)據(jù),從而獲取登錄賬號和密碼,并將其輸出。
2.4.Flask上下文
當(dāng)項目啟動后,我們可以通過訪問“:5000/login”來觸發(fā)這個登錄功能,在過程中,登錄賬號和密碼需要以表單的形式進(jìn)行提交。測試結(jié)果如圖所示。1.請求上下文
2.4.Flask上下文(2)session對象
Flask的session對象基于cookie機(jī)制實現(xiàn),其鍵值對通常存儲在服務(wù)端,形式類似{隨機(jī)字符串:'xxxxxx'}。與此同時,瀏覽器端的cookie中也保存了相同的隨機(jī)字符串,以確保在后續(xù)請求時能夠進(jìn)行驗證。
在使用session對象之前,我們需進(jìn)行一項重要的配置:設(shè)置SECRET_KEY。由于session是通過加密后存儲在cookie中的,SECRET_KEY便扮演著加密和解密的關(guān)鍵角色。1.請求上下文
2.4.Flask上下文以下是一個簡單的示例,展示了如何使用session對象存儲和獲取數(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#啟動Flask程序if__name__=="__main__":app.run()1.請求上下文
2.4.Flask上下文
在上述代碼中,我們通過Flask應(yīng)用實例app設(shè)置了SECRET_KEY,以確保session的安全性。隨后,我們定義了兩個視圖函數(shù):index()和get_session()。在index()函數(shù)中,我們?yōu)閟ession的user鍵設(shè)置了值小白,用于存儲用戶的標(biāo)識信息。而在get_session()函數(shù)中,我們則通過session.get('user')來檢索并返回session中user鍵所對應(yīng)的值。
項目啟動后,可以通過訪問“:5000/”和“:5000/get_session”來分別觸發(fā)index()和get_session()函數(shù)。測試結(jié)果如圖所示。1.請求上下文
2.4.Flask上下文2.應(yīng)用上下文
在Flask應(yīng)用中,應(yīng)用上下文(ApplicationContext)主要負(fù)責(zé)在應(yīng)用層面執(zhí)行一系列操作,如訪問配置信息、加載擴(kuò)展等。
2.4.Flask上下文(1)current_app對象
在開發(fā)過程中,我們有時需要在應(yīng)用的各個角落使用app實例,然而直接導(dǎo)入可能會顯得不太方便。此時,current_app便作為全局代理應(yīng)運而生,它允許我們在應(yīng)用的任何位置都能輕松地訪問當(dāng)前的Flask應(yīng)用實例。以下示例展示了如何利用current_app對象來獲取程序中配置的密鑰。代碼如下所示。fromflaskimportFlask,current_app
app=Flask(__name__)#假設(shè)我們在Flask應(yīng)用的配置中設(shè)置了一個密鑰
app.secret_key='your_secret_key'#配置SECRET_KEY
@app.route('/')defindex():#使用current_app對象來獲取配置的密鑰
secret_key=current_app.secret_keyreturn'配置的密鑰為:'+secret_keyif__name__=='__main__':app.run()2.應(yīng)用上下文
上述代碼中,我們在index()視圖函數(shù)中,通過current_app.secret_key的方式獲取了之前配置的secret_key密鑰值,并將其作為響應(yīng)返回。
2.4.Flask上下文
項目啟動后,可以通過“:5000”進(jìn)行訪問,測試結(jié)果如圖所示。2.應(yīng)用上下文
2.4.Flask上下文
(2)g對象
g對象在應(yīng)用上下文中作為全局的一個臨時變量存在,充當(dāng)中間媒介的作用。在處理一個請求的過程中,g對象可以用來存儲一些臨時信息,這些信息在請求的生命周期內(nèi)都是有效的,但在請求結(jié)束后會被清除。
以下示例展示了如何利用g對象來存儲和獲取臨時數(shù)據(jù)。代碼如下所示。fromflaskimportFlask,g
app=Flask(__name__)@app.route('/')defindex():#在應(yīng)用上下文中使用g對象存儲臨時信息
g.some_data='我是臨時數(shù)據(jù)!'returng.some_data
if__name__=='__main__':app.run()2.應(yīng)用上下文
在上述代碼中,我們在定義的路由處理函數(shù)index()中,通過g對象存儲了一個臨時字符串,并輸出了它的值。
2.4.Flask上下文
項目啟動后,可以通過“:5000”進(jìn)行訪問,測試結(jié)果如圖所示。2.應(yīng)用上下文
2.5.Flask的響應(yīng)在Flask中,為了向客戶端返回數(shù)據(jù),我們需要利用Flask的響應(yīng)機(jī)制。
2.5.Flask的響應(yīng)1.響應(yīng)報文
在Flask中,響應(yīng)(Response)扮演著服務(wù)器向客戶端傳遞數(shù)據(jù)的關(guān)鍵角色,它負(fù)責(zé)承載著服務(wù)器對客戶端請求的處理結(jié)果。每當(dāng)Flask的視圖函數(shù)被調(diào)用并返回一個值時,F(xiàn)lask會自動將其轉(zhuǎn)化為響應(yīng)對象(Response對象),然后將其發(fā)送給客戶端。響應(yīng)報文主要由以下幾個核心部分組成。狀態(tài)碼,表示請求的處理結(jié)果。例如,200表示請求成功,404表示資源未找到等;響應(yīng)頭,包含關(guān)于響應(yīng)的元數(shù)據(jù),如內(nèi)容類型、緩存指令等;響應(yīng)體,這是響應(yīng)的主要內(nèi)容,通常是客戶端所期望的數(shù)據(jù)。它可以是HTML、JSON、XML或其他格式的數(shù)據(jù),具體取決于客戶端的請求和服務(wù)器的處理邏輯。
2.5.Flask的響應(yīng)2.生成響應(yīng)
當(dāng)Flask的視圖函數(shù)被調(diào)用并返回一個值時,會將其轉(zhuǎn)化為響應(yīng)對象(Response對象)。如果我們需要在程序中主動生成響應(yīng),那么可以借助于Response類的構(gòu)造方法或make_response()函數(shù)。接下來,我們將對這兩種方式進(jìn)行詳細(xì)介紹。
2.5.Flask的響應(yīng)(1)Response類的構(gòu)造方法我們先來看下Response類的構(gòu)造方法的語法,其語法格式如下:
fromflaskimportResponseresponse=Response(response,status,headers,mimetype,content_type,direct_passthrough)上述構(gòu)造方法中常用參數(shù)的含義如下。response,響應(yīng)內(nèi)容,可以是字符串、字節(jié)串或其他可迭代對象;status,HTTP狀態(tài)碼,默認(rèn)為200;headers,響應(yīng)頭,是一個字典或類似字典的對象mimetype,內(nèi)容的MIME類型,如'text/html'或'application/json';content_type,與mimetype相同,用于設(shè)置內(nèi)容類型。2.生成響應(yīng)
2.5.Flask的響應(yīng)
接下來,我們將通過Response類的構(gòu)造方法來生成響應(yīng)并將其返回給客戶端。具體的實現(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)
上述代碼中,我們通過Response類的構(gòu)造方法生成響應(yīng),并通過傳入response、status和content_type等參數(shù),分別代表了響應(yīng)體內(nèi)容、響應(yīng)狀態(tài)碼、響應(yīng)類型。
2.5.Flask的響應(yīng)
項目啟動后,可以通過“:5000”進(jìn)行訪問,測試結(jié)果如圖所示。2.生成響應(yīng)
2.5.Flask的響應(yīng)(2)make_response()函數(shù)
在Flask中,make_response()函數(shù)用于創(chuàng)建和修改響應(yīng)對象。它具備強(qiáng)大的兼容性,能夠接收多種類型的參數(shù),如字符串、元組、字典以及Response對象等,并統(tǒng)一轉(zhuǎn)化為Response對象返回。
接下來,我們將通過make_response()函數(shù)來生成響應(yīng)并將其返回給客戶端。具體的實現(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)上述代碼中,我們在視圖函數(shù)index()中調(diào)用make_response()函數(shù)生成響應(yīng),并通過傳入response、status和content-type參數(shù)的值依次設(shè)置了響應(yīng)體內(nèi)容、響應(yīng)狀態(tài)碼、響應(yīng)類型。項目啟動后,可以通過“:5000”進(jìn)行訪問,測試結(jié)果如圖所示。2.生成響應(yīng)
2.5.Flask的響應(yīng)(3)生成JSON類型的響應(yīng)
在項目后端API開發(fā)中,當(dāng)需要返回JSON格式的響應(yīng)體時,可使用jsonify()函數(shù)創(chuàng)建JSON響應(yīng)。它會將傳入的參數(shù)轉(zhuǎn)換為JSON格式,并自動設(shè)置正確的content-type為application/json,確??蛻舳四軌蛘_解析響應(yīng)內(nèi)容。
接下來,我們將返回一個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)
上述代碼中,我們在視圖函數(shù)index()
中將data字典被傳遞給jsonify()函數(shù),它返回一個包含JSON數(shù)據(jù)和正確content-type的響應(yīng)。
項目啟動后,可以通過“:5000”進(jìn)行訪問,測試結(jié)果如圖所示。2.生成響應(yīng)
2.6.Flask的藍(lán)圖
隨著Flask項目的規(guī)模逐漸擴(kuò)大,對程序進(jìn)行模塊化的處理顯得尤為重要。幸運的是,F(xiàn)lask內(nèi)置了一個強(qiáng)大的模塊化處理工具——藍(lán)圖(Blueprint)。通過藍(lán)圖,開發(fā)者能夠?qū)⒋笮蛻?yīng)用拆分成更小、更易于管理的模塊,從而實現(xiàn)應(yīng)用的模塊化。Flask的藍(lán)圖應(yīng)用場景主要聚焦于構(gòu)建大型、復(fù)雜的Flask應(yīng)用、API開發(fā)、插件化開發(fā)等。
下面我們將通過一個“用戶管理”案例來展示其實際應(yīng)用。在這個案例中,我們利用藍(lán)圖將程序劃分為了管理員和普通用戶兩個獨立運行的模塊。使用藍(lán)圖前后的程序結(jié)構(gòu)對比。
2.6.Flask的藍(lán)圖
在圖(a)中,由于沒有使用藍(lán)圖,所有視圖函數(shù)都集中在app.py文件中,這不僅使得程序的開發(fā)過程變得煩瑣,也給后續(xù)的運維工作帶來了諸多不便。然而,在圖(b)中,程序通過注冊兩個藍(lán)圖——普通用戶藍(lán)圖和管理員藍(lán)圖,實現(xiàn)d了功能的模塊化劃分,從而有效地優(yōu)化了程序結(jié)構(gòu),使開發(fā)更為清晰有序,同時也方便了后續(xù)的維護(hù)和擴(kuò)展。
2.6.Flask的藍(lán)圖
接下來,我們將借助藍(lán)圖來開發(fā)圖(b)中展示的案例,請參考如下步驟。
2.6.Flask的藍(lán)圖1.創(chuàng)建藍(lán)圖Flask提供了Blueprint類,可使用其構(gòu)造方法創(chuàng)建藍(lán)圖,Blueprint類的構(gòu)造方法的語法如下所示。blueprint_name=Blueprint('blueprint_name',__name__)上述構(gòu)造方法中常用參數(shù)的含義如下。blueprint_name是藍(lán)圖的名稱,用于在應(yīng)用內(nèi)部唯一標(biāo)識藍(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__)#注冊路由@admin_blueprint.route('/register')defregister():return'管理員注冊操作!'#登錄路由@admin_blueprint.route('/login')deflogin():return'管理員登錄操作!'
2.6.Flask的藍(lán)圖1.創(chuàng)建藍(lán)圖user.py文件的代碼如下所示:fromfla
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030中國銀杏內(nèi)酯市場營銷模式及渠道分析研究報告版
- 2025至2030中國廚電產(chǎn)品高端化轉(zhuǎn)型與渠道變革研究報告
- 二十大安全課件
- 2026年石光中學(xué)教育(集團(tuán))實中校區(qū)招聘編外合同教師備考題庫及參考答案詳解一套
- 2026年招聘廣州南沙人力資源發(fā)展有限公司招聘編外工作人員備考題庫政府編外帶答案詳解
- 2026年未央?yún)^(qū)大明宮社區(qū)衛(wèi)生服務(wù)中心招聘備考題庫及完整答案詳解1套
- 2026年西南計算機(jī)有限責(zé)任公司招聘21人備考題庫及答案詳解1套
- 2025至2030中國醫(yī)藥制造行業(yè)政策環(huán)境與市場前景研究報告
- 2025至2030中國口腔醫(yī)療連鎖機(jī)構(gòu)擴(kuò)張速度及人才短缺分析研究報告
- 中國核工業(yè)二三建設(shè)有限公司2025年核級焊接技術(shù)校園招聘備考題庫及一套參考答案詳解
- 七年級上學(xué)期數(shù)學(xué)備課組期末復(fù)習(xí)計劃
- 地鐵機(jī)電(風(fēng)水電)設(shè)備維保操作手冊
- 鄉(xiāng)鎮(zhèn)污泥處理應(yīng)急預(yù)案
- 海上導(dǎo)管架安裝監(jiān)理細(xì)則
- JBT 12530.3-2015 塑料焊縫無損檢測方法 第3部分:射線檢測
- 辦公家具投標(biāo)方案(技術(shù)方案)
- 小班數(shù)學(xué)《5以內(nèi)的點數(shù)》課件
- GB/T 10118-2023高純鎵
- 預(yù)制箱梁架設(shè)安全技術(shù)交底
- PDCA提高臥床患者踝泵運動鍛煉的正確率
- YB/T 036.10-1992冶金設(shè)備制造通用技術(shù)條件鍛鋼件超聲波探傷方法
評論
0/150
提交評論