PythonWeb全棧開發(fā)項目式教程(慕課版) 課件 項目1、2:搭建“古典文學網(wǎng)”的開發(fā)環(huán)境、“古典文學網(wǎng)”后端框架解析與開發(fā)_第1頁
PythonWeb全棧開發(fā)項目式教程(慕課版) 課件 項目1、2:搭建“古典文學網(wǎng)”的開發(fā)環(huán)境、“古典文學網(wǎng)”后端框架解析與開發(fā)_第2頁
PythonWeb全棧開發(fā)項目式教程(慕課版) 課件 項目1、2:搭建“古典文學網(wǎng)”的開發(fā)環(huán)境、“古典文學網(wǎng)”后端框架解析與開發(fā)_第3頁
PythonWeb全棧開發(fā)項目式教程(慕課版) 課件 項目1、2:搭建“古典文學網(wǎng)”的開發(fā)環(huán)境、“古典文學網(wǎng)”后端框架解析與開發(fā)_第4頁
PythonWeb全棧開發(fā)項目式教程(慕課版) 課件 項目1、2:搭建“古典文學網(wǎng)”的開發(fā)環(huán)境、“古典文學網(wǎng)”后端框架解析與開發(fā)_第5頁
已閱讀5頁,還剩191頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

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

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

學習目標知識目標:

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

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

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

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

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

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

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

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

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

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

2.1.全棧開發(fā)

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

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

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

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

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

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應用框架(Microframework),它適合各種規(guī)模的Web項目,無論是小型個人網(wǎng)站還是大型企業(yè)級應用。此外,F(xiàn)lask框架的強大插件庫為用戶提供了實現(xiàn)個性化網(wǎng)站定制的可能性,使其非常適用于快速開發(fā)功能強大的Web應用程序和Web服務API。Flask框架的Logo圖標如圖所示。

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

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

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

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

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

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

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

3.1.搭建項目后端開發(fā)環(huán)境任務步驟:1.安裝Python開發(fā)環(huán)境2.安裝Flask框架及擴展包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安裝包后,接下來進行安裝。首先,使用鼠標左鍵雙擊下載的Python安裝包,這將啟動安裝程序。安裝程序通常會顯示一個圖形界面,其中包含幾個步驟來引導用戶完成安裝過程,如圖所示。1.安裝Python開發(fā)環(huán)境(2)安裝Python

3.1.搭建項目后端開發(fā)環(huán)境在上述界面勾選“Useadminprivilegeswheninstallingpy.exe”和“Addpython.exetoPATH”兩項,并單擊“Customizeinstallation”鏈接,按引導提示進行自定義安裝,進入高級選項界面,如圖所示。在上述的安裝界面,勾選圖示中的選項,并選中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框架及擴展包在進行項目的后端開發(fā)時,我們使用Flask框架作為主要開發(fā)技術。為此我們需要使用pip工具來安裝Flask框架及相關擴展庫。以下是在本項目中使用到的相關庫及其安裝命令的列表。

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

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

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

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

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

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

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

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

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

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

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

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

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

3.2.開發(fā)“hiflask”后端項目任務步驟: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)境任務步驟: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)站,選擇相應的Node.js安裝包進行下載,如圖所示。下載Node.js安裝包后,使用鼠標左鍵雙擊Node.js安裝包,啟動安裝向?qū)?,引導我們完成安裝。

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)境在進行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中安裝一系列擴展插件,具體安裝步驟參考本項目中“1.3.1.搭建項目后端開發(fā)環(huán)境”小節(jié)中的“VSCode擴展插件安裝”內(nèi)容。

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

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

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

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

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

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

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

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

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

3.4.開發(fā)“hivue”前端項目3.運行“hivue”項目首先,在VSCode單擊菜單欄中的“Terminal”選項,接著在下拉菜單中選擇“NewTerminal”命令,以打開一個新的Terminal終端窗口(確保在項目的根目錄下打開Terminal)。然后,在Terminal終端窗口中,輸入并運行以下的啟動指令,即可啟動“hivue”應用。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í)行策略設置為“RemoteSigned”。set-ExecutionPolicyRemoteSigned04項目總結(jié)

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

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

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

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

目錄01.06.拓展任務02.知識儲備04.技能拓展項目描述03.項目任務05.項目總結(jié)

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

1.項目描述

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

2.知識儲備

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

2.1.Flask程序框架解析1.Flask項目框架

Flask作為一款高度靈活且輕量級的Web框架,其項目結(jié)構(gòu)并不拘泥于固定的模式,而是賦予了開發(fā)者充分的自由,允許他們根據(jù)自己的喜好進行設計。以下展示的是一個典型的Flask項目框架布局,然而在實際應用中,項目的具體結(jié)構(gòu)可能會因項目的獨特需求以及團隊的個性化偏好而有所差異。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項目框架項目布局中的一些關鍵目錄及文件,具體如表所示。目錄/文件說明app/一個包含應用代碼和文件的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ù)的源文件,處理請求并返回響應app/__init.py__一個用于初始化Flask應用的源文件,并導入其他模塊tests/一個包含測試模塊的文件夾venv/Python虛擬環(huán)境,用于安裝Flask和其他依賴的包app.py一個項目程序入口源文件,用于啟動項目

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

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

2.1.Flask程序框架解析(2)運行應用接下來,在app.py文件中,可通過create_app()函數(shù)來創(chuàng)建Flask實例。參考代碼實現(xiàn)如下:#引入應用工廠函數(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應用設置

2.2.Flask的路由

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

2.2.Flask的路由1.注冊路由

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

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請求方法,默認為['GET'];**options:可選參數(shù),用于進一步定制路由的行為。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()進行映射關聯(lián),HTTP請求方法為POST。

2.2.Flask的路由

項目啟動后,我們使用Postman測試工具對其進行測試,訪問的URL為“:5000/register”,測試結(jié)果如圖所示。1.注冊路由

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

在Flask中,add_url_rule()函數(shù)是另一種注冊路由的方式,它提供了更多的靈活性和控制。該函數(shù)通常用于在創(chuàng)建Flask應用實例后動態(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ù)相關聯(lián)的端點名;view_func:可選參數(shù),當URL被請求時調(diào)用的視圖函數(shù)。methods:可選參數(shù),包含HTTP方法的列表,指定HTTP請求方法,默認為['GET'];strict_slashes:可選參數(shù),如果為True,則URL必須是嚴格的,即如果規(guī)則中有斜杠,則URL中也必須包含斜杠。默認為None,意味著使用app的配置值;**options:其他可選參數(shù),用于進一步定制路由的行為。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()進行映射關聯(lián),HTTP請求方法默認為GET。

2.2.Flask的路由

項目啟動后,我們使用Postman測試工具對其進行測試,訪問的URL為“:5000/login”,測試結(jié)果如圖所示。1.注冊路由

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

為了給URL鏈接增加變量,我們可以定義路由規(guī)則,把變量部分用特定的字段標記成<variable_name>,其作為關鍵字參數(shù)傳遞給關聯(lián)的視圖函數(shù)。下面這個例子展示了通過URL傳遞變量,并顯示該變量的功能,參考代碼如下所示。fromflaskimportFlaskapp=Flask(__name__)#通過<variable_name>標記,傳遞變量,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>標記傳遞字符串數(shù)據(jù)給視圖函數(shù),HTTP請求方法為GET和POST。項目啟動后,我們使用Postman測試工具對其進行測試,訪問的URL為“:5000/user/小白”,測試結(jié)果如圖所示。

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

在上面的示例中,我們使用了默認的string轉(zhuǎn)換器,傳遞字符串數(shù)據(jù)。對于其他類型的數(shù)據(jù),我們可以使用<converter:variable_name>標記,在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。它可以幫助我們生成應用程序內(nèi)的URL,并確保URL的正確性和安全性。它接受一個或多個參數(shù),其中第一個參數(shù)通常是視圖函數(shù)的名稱,其他參數(shù)則對應于該視圖函數(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ù),對應于視圖函數(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測試工具對其進行測試,訪問的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默認的請求方式,通常用于從服務器獲取資源。POST用于向服務器提交數(shù)據(jù)或文件,請求的數(shù)據(jù)是隱藏發(fā)送的,因此比GET請求更安全。PUT用于向服務器上傳或更新資源。DELETE用于請求服務器刪除指定的資源。

2.3.Flask的請求1.Flask請求方式

在注冊路由時,可以通過methods參數(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í)行一些必要的操作,比如認證、權限檢查、數(shù)據(jù)庫連接管理等。Flask的常用請求鉤子見下表。命令命令說明before_first_request這個鉤子在整個應用程序的生命周期中只會被調(diào)用一次,且在處理第一個請求之前被調(diào)用。它通常用于執(zhí)行一些只需要在應用程序啟動時執(zhí)行一次的初始化操作。(Flask2.2及以上版本不再支持該請求鉤子)before_request這個鉤子在每次請求處理之前被調(diào)用。它通常用于執(zhí)行一些每次請求都需要執(zhí)行的操作,比如檢查用戶認證狀態(tài)、記錄請求日志等。after_request這個鉤子在視圖函數(shù)處理完請求之后,但在響應返回給客戶端之前被調(diào)用。它通常用于執(zhí)行一些后處理操作,比如修改響應等。teardown_request這個鉤子在每次請求處理完之后被調(diào)用,無論是否發(fā)生異常。它通常用于執(zhí)行一些清理操作,比如關閉數(shù)據(jù)庫連接、釋放資源等。

2.3.Flask的請求2.Flask請求鉤子

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

#檢查用戶是否已認證iftokenisNoneortoken=="":print("用戶未認證,沒有操作權限!")return"用戶未認證,沒有操作權限!"else:print("用戶已認證,擁有操作權限!")pass

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

print("用戶操作成功,記錄操作信息!")returnresponse@app.teardown_requestdefclose_db_connection(exception):#關閉數(shù)據(jù)庫連接print("關閉數(shù)據(jù)庫連接,釋放資源!")pass@app.route('/index',methods=['GET','POST'])defindex():print("歡迎訪問古典文學網(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ōu)閠oken設置不同的值(token=""或token="user"),然后啟動項目。通過訪問“:5000/index”,即可在VSCode的Terminal終端中查看運行結(jié)果。具體的運行效果如圖所示。2.Flask請求鉤子

2.3.Flask的請求3.重新定向

在Flask中,重定向(Redirect)是一種將用戶從當前URL導向到另一個URL的機制。這通常用于在用戶完成某項操作后,將他們導向到另一個頁面,或者當用戶嘗試訪問不存在的頁面時,將他們導向到首頁或其他合適的頁面。

在Flask中,我們可以使用redirect()函數(shù),進行重新定向,參考代碼如下所示。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”進行訪問,測試結(jié)果如圖所示。

2.4.Flask上下文

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

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

2.4.Flask上下文1.請求上下文(1)request對象

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

2.4.Flask上下文request對象的常用方法表方法說明close()關閉當前請求get_data()獲取請求中的數(shù)據(jù)get_json()進行JSON解析并返回數(shù)據(jù)make_from_data_parse()創(chuàng)建表單數(shù)據(jù)解析器1.請求上下文

2.4.Flask上下文

接下來,我們將模擬一個登錄程序。這個程序的主要任務是接收用戶的登錄請求,并獲取用戶輸入的賬號及密碼并輸出。具體代碼如下所示。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上下文

當項目啟動后,我們可以通過訪問“:5000/login”來觸發(fā)這個登錄功能,在過程中,登錄賬號和密碼需要以表單的形式進行提交。測試結(jié)果如圖所示。1.請求上下文

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

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

在使用session對象之前,我們需進行一項重要的配置:設置SECRET_KEY。由于session是通過加密后存儲在cookie中的,SECRET_KEY便扮演著加密和解密的關鍵角色。1.請求上下文

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

defindex():

#設置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應用實例app設置了SECRET_KEY,以確保session的安全性。隨后,我們定義了兩個視圖函數(shù):index()和get_session()。在index()函數(shù)中,我們?yōu)閟ession的user鍵設置了值小白,用于存儲用戶的標識信息。而在get_session()函數(shù)中,我們則通過session.get('user')來檢索并返回session中user鍵所對應的值。

項目啟動后,可以通過訪問“:5000/”和“:5000/get_session”來分別觸發(fā)index()和get_session()函數(shù)。測試結(jié)果如圖所示。1.請求上下文

2.4.Flask上下文2.應用上下文

在Flask應用中,應用上下文(ApplicationContext)主要負責在應用層面執(zhí)行一系列操作,如訪問配置信息、加載擴展等。

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

在開發(fā)過程中,我們有時需要在應用的各個角落使用app實例,然而直接導入可能會顯得不太方便。此時,current_app便作為全局代理應運而生,它允許我們在應用的任何位置都能輕松地訪問當前的Flask應用實例。以下示例展示了如何利用current_app對象來獲取程序中配置的密鑰。代碼如下所示。fromflaskimportFlask,current_app

app=Flask(__name__)#假設我們在Flask應用的配置中設置了一個密鑰

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.應用上下文

上述代碼中,我們在index()視圖函數(shù)中,通過current_app.secret_key的方式獲取了之前配置的secret_key密鑰值,并將其作為響應返回。

2.4.Flask上下文

項目啟動后,可以通過“:5000”進行訪問,測試結(jié)果如圖所示。2.應用上下文

2.4.Flask上下文

(2)g對象

g對象在應用上下文中作為全局的一個臨時變量存在,充當中間媒介的作用。在處理一個請求的過程中,g對象可以用來存儲一些臨時信息,這些信息在請求的生命周期內(nèi)都是有效的,但在請求結(jié)束后會被清除。

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

app=Flask(__name__)@app.route('/')defindex():#在應用上下文中使用g對象存儲臨時信息

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

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

在上述代碼中,我們在定義的路由處理函數(shù)index()中,通過g對象存儲了一個臨時字符串,并輸出了它的值。

2.4.Flask上下文

項目啟動后,可以通過“:5000”進行訪問,測試結(jié)果如圖所示。2.應用上下文

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

2.5.Flask的響應1.響應報文

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

2.5.Flask的響應2.生成響應

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

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

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

2.5.Flask的響應

接下來,我們將通過Response類的構(gòu)造方法來生成響應并將其返回給客戶端。具體的實現(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.生成響應

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

2.5.Flask的響應

項目啟動后,可以通過“:5000”進行訪問,測試結(jié)果如圖所示。2.生成響應

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

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

接下來,我們將通過make_response()函數(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.生成響應

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

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

在項目后端API開發(fā)中,當需要返回JSON格式的響應體時,可使用jsonify()函數(shù)創(chuàng)建JSON響應。它會將傳入的參數(shù)轉(zhuǎn)換為JSON格式,并自動設置正確的content-type為application/json,確??蛻舳四軌蛘_解析響應內(nèi)容。

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

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

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

2.5.Flask的響應

上述代碼中,我們在視圖函數(shù)index()

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

項目啟動后,可以通過“:5000”進行訪問,測試結(jié)果如圖所示。2.生成響應

2.6.Flask的藍圖

隨著Flask項目的規(guī)模逐漸擴大,對程序進行模塊化的處理顯得尤為重要。幸運的是,F(xiàn)lask內(nèi)置了一個強大的模塊化處理工具——藍圖(Blueprint)。通過藍圖,開發(fā)者能夠?qū)⒋笮蛻貌鸱殖筛 ⒏子诠芾淼哪K,從而實現(xiàn)應用的模塊化。Flask的藍圖應用場景主要聚焦于構(gòu)建大型、復雜的Flask應用、API開發(fā)、插件化開發(fā)等。

下面我們將通過一個“用戶管理”案例來展示其實際應用。在這個案例中,我們利用藍圖將程序劃分為了管理員和普通用戶兩個獨立運行的模塊。使用藍圖前后的程序結(jié)構(gòu)對比。

2.6.Flask的藍圖

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

2.6.Flask的藍圖

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

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

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

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

溫馨提示

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

評論

0/150

提交評論