簡介
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等等。其中Diango是目前Python的框架中使用度最高的。但是Django如同java的EJB(EnterpriseJavaBeansJavaEE服務器端組件模型)多被用于大型網站的開發,但對于大多數的小型網站的開發,使用SSH(Struts+Spring+Hibernat的一個JavaEE集成框架)就可以滿足,和其他的輕量級框架相比較,Flask框架有很好的擴展性,這是其他Web框架不可替代的。
基本模式
Flask的基本模式為在程序裡将一個視圖函數分配給一個URL,每當用戶訪問這個URL時,系統就會執行給該URL分配好的視圖函數,獲取函數的返回值并将其顯示到浏覽器上,其工作過程見圖。
IT運維的基本點為安全、穩定、高效,運維自動化的目的就是為了提高運維效率,Flask[9]開發快捷的特點正好符合運維的高效性需求。在項目叠代開發的過程中,所需要實現的運維功能以及擴展會逐漸增多,針對這一特點更是需要使用易擴展的Flask框架。另外,由于每個公司對運維的需求不同,所要實現的功能也必須有針對性地來設計,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框架集成。開發者可以根據項目的需求進行相應的擴展,或者自行開發。這與大型框架恰恰相反,大型框架本身做出了大部分決定,難以靈活改變方案。同時也開發了一套基于網頁技術的人機交互界面,可以讓用戶與服務端友好地交互。


















