(1)Flask
Flask確實很“輕”责球,不愧是Micro Framework,從Django轉向Flask的開發(fā)者一定會如此感慨,除非二者均為深入使用過
Flask自由、靈活叁征,可擴展性強,第三方庫的選擇面廣,開發(fā)時可以結合自己最喜歡用的輪子等舔,也能結合最流行最強大的Python庫
入門簡單牺荠,即便沒有多少web開發(fā)經驗翁巍,也能很快做出網站
非常適用于小型網站
非常適用于開發(fā)web服務的API
開發(fā)大型網站無壓力,但代碼架構需要自己設計休雌,開發(fā)成本取決于開發(fā)者的能力和經驗
各方面性能均等于或優(yōu)于Django
Django自帶的或第三方的好評如潮的功能灶壶,F(xiàn)lask上總會找到與之類似第三方庫
Flask靈活開發(fā),Python高手基本都會喜歡Flask杈曲,但對Django卻可能褒貶不一
Flask與關系型數(shù)據(jù)庫的配合使用不弱于Django驰凛,而其與NoSQL數(shù)據(jù)庫的配合遠遠優(yōu)于Django
Flask比Django更加Pythonic,與Python的philosophy更加吻合
(2)Django
Django太重了担扑,除了web框架恰响,自帶ORM和模板引擎,靈活和自由度不夠高
Django能開發(fā)小應用魁亦,但總會有“殺雞焉用牛刀”的感覺
Django的自帶ORM非常優(yōu)秀渔隶,綜合評價略高于SQLAlchemy
Django自帶的模板引擎簡單好用羔挡,但其強大程度和綜合評價略低于Jinja
Django自帶ORM也使Django與關系型數(shù)據(jù)庫耦合度過高洁奈,如果想使用MongoDB等NoSQL數(shù)據(jù),需要選取合適的第三方庫绞灼,且總感覺Django+SQL才是天生一對的搭配利术,Django+NoSQL砍掉了Django的半壁江山
Django目前支持Jinja等非官方模板引擎
Django自帶的數(shù)據(jù)庫管理app好評如潮
Django非常適合企業(yè)級網站的開發(fā):快速、靠譜低矮、穩(wěn)定
Django成熟印叁、穩(wěn)定、完善军掂,但相比于Flask轮蜕,Django的整體生態(tài)相對封閉
Django是Python web框架的先驅,用戶多蝗锥,第三方庫最豐富跃洛,最好的Python庫,如果不能直接用到Django中终议,也一定能找到與之對應的移植
Django上手也比較容易汇竭,開發(fā)文檔詳細、完善穴张,相關資料豐富
框架之間的差別
Django功能大而全细燎,F(xiàn)lask只包含基本的配置 Django的一站式解決的思路,能讓開發(fā)者不用在開發(fā)之前就在選擇應用的基礎設施上花費大量時間皂甘。Django有模板玻驻,表單,路由偿枕,認證璧瞬,基本的數(shù)據(jù)庫管理等等內建功能佛析。與之相反,F(xiàn)lask只是一個內核彪蓬,默認依賴于兩個外部庫: Jinja2 模板引擎和 Werkzeug WSGI 工具集寸莫,其他很多功能都是以擴展的形式進行嵌入使用。
Flask 比 Django 更靈活 用Flask來構建應用之前档冬,選擇組件的時候會給開發(fā)者帶來更多的靈活性 膘茎,可能有的應用場景不適合使用一個標準的ORM(Object-Relational Mapping 對象關聯(lián)映射),或者需要與不同的工作流和模板系統(tǒng)交互酷誓。
簡單來說披坏,藍圖就是一個存儲操作路由映射方法的容器,主要用來實現(xiàn)客戶端請求和URL相互關聯(lián)的功能盐数。 在Flask中棒拂,使用藍圖可以幫助我們實現(xiàn)模塊化應用的功能。
Flask 和 Django 路由映射的區(qū)別:
1.? ? 在Django中, 路由是瀏覽器訪問服務器時,先訪問的項目中的url, 再由項目中的url找到應用中url,然后找到我們的視圖函數(shù); 視圖函數(shù)然后直接或者間接的繼承了Django提供的父類View,配置路由時玫氢,使用類視圖的as_view()方法來添加;
2.? ? 在Flask 中,路由是通過裝飾器給每個視圖函數(shù)提供的, 而且根據(jù)請求方式的不同可以一個 url 用于不同的作用;