首頁技術(shù)文章正文

Flask是什么?Flask的發(fā)展史和特點?

更新時間:2023-03-15 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

Flask是一個用Python編寫的微框架,它可以幫助開發(fā)者在短時間內(nèi)完成一個功能豐富的Web應(yīng)用程序。微框架并不意味著將Web應(yīng)用程序的所有代碼放置在一個py文件中,而是意味著代碼簡潔且易于擴展。

Flask默認依賴Werkzeug WSGI工具包和Jinja2模板引擎,它只保留了Web開發(fā)的核心功能,沒有用戶認證、表單驗證、發(fā)送郵件等其他Web應(yīng)用程序框架通常擁有的功能。開發(fā)者若需要給Flask程序添加額外的功能,可以在Flask官網(wǎng)找到相應(yīng)的擴展包進行開發(fā)。

Flask之所以如此受歡迎,離不開其自身具備的幾個特點。

內(nèi)置開發(fā)服務(wù)器和調(diào)試器

Flask自帶開發(fā)服務(wù)器,它可以讓開發(fā)者在調(diào)試Web應(yīng)用程序時無須安裝其他的網(wǎng)絡(luò)服務(wù)器,如Tomcat、JBoss、Apache等,為程序正式運行提供了一定的保障。另外,基于Flask開發(fā)的程序默認處于調(diào)試狀態(tài),當程序運行出現(xiàn)異常時,F(xiàn)lask程序會同時向啟動Python程序的控制臺和HTTP客戶端發(fā)送錯誤信息。

使用Jinja2模板引擎

Flask使用Jinja2模板引擎將HTML頁面與應(yīng)用程序聯(lián)系起來。Jinja2是一個靈活的模板引擎,它由Django模板引擎發(fā)展而來,但比Django模板引擎更加高效。Jinja2模板引擎使用配制的語義系統(tǒng),不僅提供了靈活的模板繼承技術(shù),還可以自動防止XSS跨站攻擊。

極強的定制性

Flask社區(qū)提供了功能豐富的擴展包,能讓程序在具備核心功能的同時實現(xiàn)功能的擴展。開發(fā)者可以根據(jù)自己的需求添加擴展包,也可以自行開發(fā)擴展包,擴展包有助于開發(fā)者快速開發(fā)功能豐富的網(wǎng)站,并實現(xiàn)對網(wǎng)站的個性化定制。

基于Unicode編碼格式

Flask完全基于Unicode編碼格式,這對制作使用非純ASCII字符集的網(wǎng)站而言非常方便。HTTP支持傳輸任何編碼格式,但該協(xié)議要求每次傳輸時要在請求頭中顯式指定使用的編碼格式,F(xiàn)lask程序默認會為請求頭指定WJTF-8編碼,開發(fā)者無須再擔(dān)心編碼問題。

完全兼容WSGI1.0標準

WSGI(Web服務(wù)器網(wǎng)關(guān)接口)是為Python語言定義的Web服務(wù)器和Web應(yīng)用程序或框架之間的一種簡單而通用的接口,它制定了一套通信標準,保證Web服務(wù)器與Web應(yīng)用程序之間相互通信。Flask程序完全兼容WSGI,能夠配置在各種大型網(wǎng)絡(luò)服務(wù)器。

無縫銜接單元測試

單元測試是指對軟件中的最小可測試單元進行檢查和驗證,一般用于判斷某個特定條件下某個特定函數(shù)的行為,保證該函數(shù)在特定條件下能夠l按預(yù)想輸出,或者在不符合要求時提醒開發(fā)者進行檢查。Flask提供了一個與Python自帶的單元測試框架unittest無縫銜接的測試接口,即Flask對象的test_client(O函數(shù),通過該函數(shù)測試程序可以模擬HTTP訪問客戶端,調(diào)用Flask路由綁定的視圖函數(shù),并且獲取視圖函數(shù)的返回值進行自定義的驗證。

分享到:
在線咨詢 我要報名
和我們在線交談!