更新時(shí)間:2023-03-15 來源:黑馬程序員 瀏覽量:
Flask是一個(gè)用Python編寫的微框架,它可以幫助開發(fā)者在短時(shí)間內(nèi)完成一個(gè)功能豐富的Web應(yīng)用程序。微框架并不意味著將Web應(yīng)用程序的所有代碼放置在一個(gè)py文件中,而是意味著代碼簡潔且易于擴(kuò)展。
Flask默認(rèn)依賴Werkzeug WSGI工具包和Jinja2模板引擎,它只保留了Web開發(fā)的核心功能,沒有用戶認(rèn)證、表單驗(yàn)證、發(fā)送郵件等其他Web應(yīng)用程序框架通常擁有的功能。開發(fā)者若需要給Flask程序添加額外的功能,可以在Flask官網(wǎng)找到相應(yīng)的擴(kuò)展包進(jìn)行開發(fā)。
Flask之所以如此受歡迎,離不開其自身具備的幾個(gè)特點(diǎn)。
Flask自帶開發(fā)服務(wù)器,它可以讓開發(fā)者在調(diào)試Web應(yīng)用程序時(shí)無須安裝其他的網(wǎng)絡(luò)服務(wù)器,如Tomcat、JBoss、Apache等,為程序正式運(yùn)行提供了一定的保障。另外,基于Flask開發(fā)的程序默認(rèn)處于調(diào)試狀態(tài),當(dāng)程序運(yùn)行出現(xiàn)異常時(shí),F(xiàn)lask程序會(huì)同時(shí)向啟動(dòng)Python程序的控制臺(tái)和HTTP客戶端發(fā)送錯(cuò)誤信息。
Flask使用Jinja2模板引擎將HTML頁面與應(yīng)用程序聯(lián)系起來。Jinja2是一個(gè)靈活的模板引擎,它由Django模板引擎發(fā)展而來,但比Django模板引擎更加高效。Jinja2模板引擎使用配制的語義系統(tǒng),不僅提供了靈活的模板繼承技術(shù),還可以自動(dòng)防止XSS跨站攻擊。
Flask社區(qū)提供了功能豐富的擴(kuò)展包,能讓程序在具備核心功能的同時(shí)實(shí)現(xiàn)功能的擴(kuò)展。開發(fā)者可以根據(jù)自己的需求添加擴(kuò)展包,也可以自行開發(fā)擴(kuò)展包,擴(kuò)展包有助于開發(fā)者快速開發(fā)功能豐富的網(wǎng)站,并實(shí)現(xiàn)對網(wǎng)站的個(gè)性化定制。
Flask完全基于Unicode編碼格式,這對制作使用非純ASCII字符集的網(wǎng)站而言非常方便。HTTP支持傳輸任何編碼格式,但該協(xié)議要求每次傳輸時(shí)要在請求頭中顯式指定使用的編碼格式,F(xiàn)lask程序默認(rèn)會(huì)為請求頭指定WJTF-8編碼,開發(fā)者無須再擔(dān)心編碼問題。
WSGI(Web服務(wù)器網(wǎng)關(guān)接口)是為Python語言定義的Web服務(wù)器和Web應(yīng)用程序或框架之間的一種簡單而通用的接口,它制定了一套通信標(biāo)準(zhǔn),保證Web服務(wù)器與Web應(yīng)用程序之間相互通信。Flask程序完全兼容WSGI,能夠配置在各種大型網(wǎng)絡(luò)服務(wù)器。
單元測試是指對軟件中的最小可測試單元進(jìn)行檢查和驗(yàn)證,一般用于判斷某個(gè)特定條件下某個(gè)特定函數(shù)的行為,保證該函數(shù)在特定條件下能夠l按預(yù)想輸出,或者在不符合要求時(shí)提醒開發(fā)者進(jìn)行檢查。Flask提供了一個(gè)與Python自帶的單元測試框架unittest無縫銜接的測試接口,即Flask對象的test_client(O函數(shù),通過該函數(shù)測試程序可以模擬HTTP訪問客戶端,調(diào)用Flask路由綁定的視圖函數(shù),并且獲取視圖函數(shù)的返回值進(jìn)行自定義的驗(yàn)證。