真正搞明白Python中Django和Flask框架的區別

在談Python中Django框架和Flask框架的區別以前,咱們須要先探討以下幾個問題。python

1、爲何要使用框架?


  • 爲了更好地闡述這個問題,咱們把開發一個應用的過程進行類比,每每開發一個應用(web應用、系統應用)跟建造房子的過程同樣,須要先打地基,搭好骨架,而後一塊磚一塊磚疊上去。程序員

  • 而開發一個應用呢?一樣也須要一個好的架構設計,數據庫建模,而後一個模塊一個模塊使用代碼實現。web

若是開發一個軟件應用不使用框架,和咱們建房子時,每一塊磚、每一根鋼筋都須要本身生產出來本質上是同樣的。數據庫

顯而易見,若是在建造房子以前,每一塊磚頭、每一種建材,都須要咱們本身去生產的話,建造房子的效率是極低的,甚至可能一生也沒法把房子建造好。django

在開發應用系統時,使用框架能夠帶來以下好處編程

  • 大大提高開發效率flask

  • 讓應用開發更加規範、拓展性更強後端

  • 讓程序員把更多的精力放在業務邏輯的實現上,而不是重複、而複雜的基礎環境上(好比web服務器、底層實現等)服務器


2、爲何使用Django和Flask框架?


  • 在Python編程語言的世界裏,功能最強大、最流行的兩個框架。架構

  • 不只在web後端開發、微服務開發,同時在ERP系統開發、API接口開發等領域,這兩個框架應用很是普遍。


3、Django和Flask的區別

1.形象類比

若是Django相似於精裝修的房子,自帶豪華傢俱、很是齊全功能強大的家電,什麼都有了,拎包入住便可,十分方便。


而Flask相似於毛坯房,本身想把房子裝修成什麼樣本身找材料,買傢俱本身裝。材料和傢俱種類很是豐富,而且都是現成免費的,直接拿過去用便可。


2.在體量上的區別

Flask:

  • 小巧、靈活,讓程序員本身決定定製哪些功能,很是適用於小型網站。
  • 對於普通的工人來講將毛坯房裝修爲城市綜合體仍是很麻煩的,使用Flask來開發大型網站也同樣,開發的難度較大,代碼架構須要本身設計,開發成本取決於開發者的能力和經驗。


Django:

  • 大而全,功能極其強大,是Python web框架的先驅,用戶多,第三方庫極其豐富。
  • 很是適合企業級網站的開發,可是對於小型的微服務來講,總有「殺雞焉有宰牛刀」的感受,體量較大,很是臃腫,定製化程度沒有Flask高,也沒有Flask那麼靈活。


3.經過大數據統計分析

全球著名的stackshare網站對Django和Flask這兩個框架的調查分析。

  • 從全球開發者關注程度上:Django爲5.8K,Flask爲3.31K

  • 從國外招聘網站崗位需求上:提到Django的有1.77K,Flask爲942

  • 從著名的問答網站stack overflow提問數量上:Django 196K,Flask爲27.6K

  • 從全球著名的代碼託管平臺上的star和fork數量上:Django分別爲41.3K17.8K,Flask分別爲43.8K12.3K


4.完成一樣一個Hello World功能


使用Flask來完成:

  • 第一步,安裝Flask,pip install flask

  • 第二步,建立my_first_app.py文件,添加以下代碼

完成最簡單的Hello World功能,Flask只須要7行代碼,很是簡單、方便。


使用Django來完成:

  • 第一步,安裝Django,pip install django

  • 第二步,建立工程項目目錄,django-admin startproject myproject

  • 第三步,建立子應用,python manage.py startapp myapp

  • 第四步,在myapp應用所在目錄中的views.py文件中,添加以下代碼

  • 第五步,在myapp應用所在目錄中建立urls.py路由文件,並添加以下代碼

  • 第六步,在主路由文件中添加路由。

從上面的操做步驟可知,實現一樣的一個功能,每每Flask較爲簡單,代碼較少,而Django所涉及到的流程較多,工程項目結構清晰,在大型項目中具備優點。


4、在實際工做中如何選擇這兩個框架呢?


  • 若是你想搞懂Python web開發WSGI協議原理以及實現過程、或者你想靈活定製組件,徹底DIY你的應用、想實現微服務,那麼建議你選擇Flask。

  • 若是你關注產品的最終交付、想快速開發一個大的應用系統(好比新聞類網站、商城、ERP等),那麼建議你選擇Django,你想獲得的功能它都有,想不到的功能它也有。


5、如何才能學好框架呢?


1.須要先學習框架的基礎知識、基本實現原理。

2.結合項目實踐,提高編碼能力和業務邏輯的理解。

3.翻看框架源碼,深刻理解源碼精髓。(進階)

相關文章
相關標籤/搜索