複製鏈接
請複製以下鏈接發送給好友

Flask

(語言編寫)

鎖定
Flask是一個使用 Python 編寫的輕量級 Web 應用框架。其 WSGI 工具箱採用 Werkzeug ,模板引擎則使用 Jinja2 。Flask使用 BSD 授權。
Flask也被稱為 “microframework” ,因為它使用簡單的核心,用 extension 增加其他功能。Flask沒有默認使用的數據庫、窗體驗證工具。 [1] 
中文名
Flask
外文名
Flask
也被稱
“microframework”
特    點
使用簡單的核心
授    權
BSD 授權
核心語言
Python

目錄

Flask簡介

Flask是一個輕量級的可定製框架,使用Python語言編寫,較其他同類型框架更為靈活、輕便、安全且容易上手。它可以很好地結合MVC模式進行開發,開發人員分工合作,小型團隊在短時間內就可以完成功能豐富的中小型網站或Web服務的實現。另外,Flask還有很強的定製性,用户可以根據自己的需求來添加相應的功能,在保持核心功能簡單的同時實現功能的豐富與擴展,其強大的插件庫可以讓用户實現個性化的網站定製,開發出功能強大的網站。
Flask是目前十分流行的web框架,採用Python編程語言來實現相關功能。它被稱為微框架(microframework),“微”並不是意味着把整個Web應用放入到一個Python文件,微框架中的“微”是指Flask旨在保持代碼簡潔且易於擴展,Flask框架的主要特徵是核心構成比較簡單,但具有很強的擴展性和兼容性,程序員可以使用Python語言快速實現一個網站或Web服務。一般情況下,它不會指定數據庫和模板引擎等對象,用户可以根據需要自己選擇各種數據庫。Flask自身不會提供表單驗證功能,在項目實施過程中可以自由配置,從而為應用程序開發提供數據庫抽象層基礎組件,支持進行表單數據合法性驗證、文件上傳處理、用户身份認證和數據庫集成等功能。Flask主要包括Werkzeug和Jinja2兩個核心函數庫,它們分別負責業務處理和安全方面的功能,這些基礎函數為web項目開發過程提供了豐富的基礎組件。Werkzeug庫十分強大,功能比較完善,支持URL路由請求集成,一次可以響應多個用户的訪問請求;支持Cookie和會話管理,通過身份緩存數據建立長久連接關係,並提高用户訪問速度;支持交互式Javascript調試,提高用户體驗;可以處理HTTP基本事務,快速響應客户端推送過來的訪問請求。Jinja2庫支持自動HTML轉義功能,能夠很好控制外部黑客的腳本攻擊。系統運行速度很快,頁面加載過程會將源碼進行編譯形成Python字節碼,從而實現模板的高效運行;模板繼承機制可以對模板內容進行修改和維護,為不同需求的用户提供相應的模板。目前Python的web框架有很多。除了Flask,還有django、Web2py等等。其中Django是目前Python的框架中使用度最高的。但是Django如同java的EJB(EnterpriseJavaBeansJavaEE服務器端組件模型)多被用於大型網站的開發,但對於大多數的小型網站的開發,使用SSH(Struts+Spring+Hibernat的一個JavaEE集成框架)就可以滿足,和其他的輕量級框架相比較,Flask框架有很好的擴展性,這是其他Web框架不可替代的。 [2] 

Flask基本模式

Flask的基本模式為在程序裏將一個視圖函數分配給一個URL,每當用户訪問這個URL時,系統就會執行給該URL分配好的視圖函數,獲取函數的返回值並將其顯示到瀏覽器上,其工作過程見圖。
圖示 圖示
IT運維的基本點為安全、穩定、高效,運維自動化的目的就是為了提高運維效率,Flask[9]開發快捷的特點正好符合運維的高效性需求。在項目迭代開發的過程中,所需要實現的運維功能以及擴展會逐漸增多,針對這一特點更是需要使用易擴展的Flask框架。另外,由於每個公司對運維的需求不同,所要實現的功能也必須有針對性地來設計,Flask可以很好地完成這個任務。 [3] 

Flask特點

目前,我國市場上大部分智能交通系統控制平台採用的都是C/S模式,對終端要求較高,且安裝繁瑣。部分的平台也有采用基於B/S模式傳統框架,但這些框架的一些功能大多被固定,缺乏靈活性。採用Flask微型框架做服務器的後台開發,Flask是基於Python開發的框架,類似的框架還有Django、Tornado等,之所選擇Flask來開發,原因如下:
一、後續的基於機器學習的車輛檢測與屬性識別算法研究,主要開發語言也是應用Python,整個系統統一開發語言,便於開發和後期維護。
二、Flask因為靈活、輕便且高效的特點被業界認可,同時擁有基於Werkzeug、Jinja2等一些開源庫,擁有內置服務器和單元測試,適配RESTful,支持安全的cookies,而且官方文檔完整,便於學習掌握。
三、Flask中擁有靈活的Jinja2模板引擎,提高了前端代碼的複用率。這樣可以提高開發效率和有利於後期開發與維護。在現有標準中,Flask算是微小型框架。Flask有兩個主要依賴:路由、調試和Web服務器網關接口(WebServerGatewayInterface,WSGI)子系統由Werkzeug提供;模板系統由Jinja2提供。Werkzeug和Jinja2都是由Flask的核心開發者開發而成。對於數據庫訪問、驗證Web表單和用户身份認證等一系列功能,Flask框架是不支持的。這些功能都是以擴展組件的方式進行實現,然後再與Flask框架集成。開發者可以根據項目的需求進行相應的擴展,或者自行開發。這與大型框架恰恰相反,大型框架本身做出了大部分決定,難以靈活改變方案。 [4] 
Flask的特點有:良好的文檔、豐富的插件、包含開發服務器和調試器(debugger)、集成支持單元測試、RESTful請求調度、支持安全cookies、基於Unicode。 [5] 
參考資料
  • 1.    Flask官方網站  .Flask官方網站[引用日期2018-07-19]
  • 2.    沈宏偉.基於Flask的企業內網安全系統的設計與實現[D].北京:北京交通大學,2018.
  • 3.    王安瑾.基於Flask的金融自動化運維平台的設計與實現[D].上海:東華大學,2018.
  • 4.    都飛翔.基於Flask和機器學習的智能交通系統應用研究[D].山西:太原理工大學,2018.
  • 5.    Flask框架的概念及特點  .Python學習網[引用日期2022-03-18]