Django和Flask框架優(yōu)缺點(diǎn)對(duì)比
Flask 在 Django 之后發(fā)布,現(xiàn)階段有大量的插件和擴(kuò)展?jié)M足不同需要 Django發(fā)布于2005年,F(xiàn)lask創(chuàng)始于2010年年中。
Django功能大而全,F(xiàn)lask只包含基本的配置, Django的一站式解決的思路,能讓開發(fā)者不用在開發(fā)之前不用花費(fèi)大量時(shí)間在選擇應(yīng)用的基礎(chǔ)設(shè)施。
Django有模板,表單,路由,認(rèn)證,基本的數(shù)據(jù)庫(kù)管理等等內(nèi)建功能。與之相反,F(xiàn)lask只是一個(gè)內(nèi)核,默認(rèn)依賴于兩個(gè)外部庫(kù): Jinja2 模板引擎和 Werkzeug WSGI 工具集,其他很多功能都是以擴(kuò)展的形式進(jìn)行嵌入使用。
Flask 比 Django 更靈活 用Flask來(lái)構(gòu)建應(yīng)用之前,選擇組件的時(shí)候會(huì)給開發(fā)者帶來(lái)更多的靈活性 ,可能有的應(yīng)用場(chǎng)景不適合使用一個(gè)標(biāo)準(zhǔn)的ORM(Object-Relational Mapping 對(duì)象關(guān)聯(lián)映射),或者需要與不同的工作流和模板系統(tǒng)交互。
一、整體設(shè)計(jì)方面
首先,兩者都是非常優(yōu)秀的框架。整體來(lái)講,兩者設(shè)計(jì)的哲學(xué)是區(qū)別最大的地方。
Django提供一站式的解決方案,從模板、ORM、Session、Authentication等等都分配好了,app, admin后臺(tái)生成, 使用非常方便.
Flask只提供了一些核心功能,非常簡(jiǎn)潔優(yōu)雅。它是一個(gè)微框架,其他的由擴(kuò)展提供,但它的blueprint使它也能夠很方便的進(jìn)行水平擴(kuò)展。
二、路由設(shè)計(jì)
Django的路由設(shè)計(jì)是采用集中處理的方法,利用正則匹配。Flask也能這么做,但更多的是使用裝飾器的形式,這個(gè)有優(yōu)點(diǎn)也有缺點(diǎn),優(yōu)點(diǎn)是讀源碼時(shí)看到函數(shù)就知道怎么用的,缺點(diǎn)是一旦源碼比較長(zhǎng),你要查路由就不太方便了,但這也促使你去思考如何更合理的安排代碼。
三、應(yīng)用模塊化設(shè)計(jì)
Django的模塊化是集成在命令里的,也就是說(shuō)一開始Django的目標(biāo)就是為以后玩大了做準(zhǔn)備的。每個(gè)都是一個(gè)獨(dú)立的模塊,為以后的復(fù)用提供了便利。
Flask通過(guò)Blueprint來(lái)提供模塊化,自己對(duì)項(xiàng)目結(jié)構(gòu)劃分成不同的模塊進(jìn)行組織。
四、配置
Django的配置主要還是靠settings.py來(lái)做,當(dāng)然為了Development和Production環(huán)境分離,還有一些方法來(lái)處理配置。
Flask的配置很靈活,有多種方法配置,不同環(huán)境的配置也非常方便。
五、文檔
兩者都提供了詳盡的文檔,F(xiàn)lask的文檔風(fēng)格很受我個(gè)人喜好,Django的文檔也非常優(yōu)秀,當(dāng)時(shí)用學(xué)Django時(shí),就是只看了Django的文檔。
六、社區(qū)
Django社區(qū)很大,各種插件很齊全,大部分情況下你都能找到你想要的。
Flask起步晚,但社區(qū)也不小,之前有一次看在github上的star數(shù),兩個(gè)相差并不遠(yuǎn),說(shuō)明越來(lái)越多的人關(guān)注它,雖然插件沒(méi)那么全,但常用的還都是有的,而且質(zhì)量都比較高。
最后再次說(shuō)一下,兩個(gè)都是非常優(yōu)秀的框架,很多時(shí)候選用這些框架是根據(jù)實(shí)際項(xiàng)目側(cè)重不同來(lái)選的:-)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python web框架(django,flask)實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)讀寫分離的示例
- django和flask哪個(gè)值得研究學(xué)習(xí)
- flask/django 動(dòng)態(tài)查詢表結(jié)構(gòu)相同表名不同數(shù)據(jù)的Model實(shí)現(xiàn)方法
- Flask和Django框架中自定義模型類的表名、父類相關(guān)問(wèn)題分析
- 查看Django和flask版本的方法
- python常用web框架簡(jiǎn)單性能測(cè)試結(jié)果分享(包含django、flask、bottle、tornado)
- 在 Django/Flask 開發(fā)服務(wù)器上使用 HTTPS
- 使用Django和Flask獲取訪問(wèn)來(lái)源referrer
相關(guān)文章
如何使用Python進(jìn)行OCR識(shí)別圖片中的文字
這篇文章主要介紹了使用Python進(jìn)行OCR識(shí)別圖片中的文字 ,本文通過(guò)實(shí)例代碼加文字說(shuō)明的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04python入門之語(yǔ)句(if語(yǔ)句、while語(yǔ)句、for語(yǔ)句)
這篇文章主要介紹了python入門之語(yǔ)句,主要包括if語(yǔ)句、while語(yǔ)句、for語(yǔ)句的使用,需要的朋友可以參考下2015-01-01python 的numpy庫(kù)中的mean()函數(shù)用法介紹
這篇文章主要介紹了python 的numpy庫(kù)中的mean()函數(shù)用法介紹,具有很好對(duì)參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03Python+matplotlib實(shí)現(xiàn)繪制等高線圖示例詳解
在matplotlib.pyplot中除了可以繪制常規(guī)圖表如折線、柱狀、散點(diǎn)等,還可以繪制常用在地理上的平面展示地型的等高線圖,本文主要為大家介紹了如何利用matplotlib繪制等高線圖,需要的可以參考一下2021-12-12基于Python Shell獲取hostname和fqdn釋疑
一直以來(lái)被linux的hostname和fqdn(Fully Qualified Domain Name)困惑著,今天通過(guò)腳本之家平臺(tái)把它們使用細(xì)節(jié)弄清分享給大家2016-01-01python利用微信公眾號(hào)實(shí)現(xiàn)報(bào)警功能
微信公眾號(hào)共有三種,服務(wù)號(hào)、訂閱號(hào)、企業(yè)號(hào)。它們?cè)讷@取AccessToken上各有不同。接下來(lái)通過(guò)本文給大家介紹python利用微信公眾號(hào)實(shí)現(xiàn)報(bào)警功能,感興趣的朋友一起看看吧2018-06-06Python使用argcomplete模塊實(shí)現(xiàn)自動(dòng)補(bǔ)全
argcomplete?是一個(gè)強(qiáng)大的Python庫(kù),可以大幅改善命令行應(yīng)用程序的用戶體驗(yàn),本文主要介紹了argcomplete模塊的相關(guān)用法,感興趣的小伙伴可以了解下2023-11-11