亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

Flask 框架簡介

圖片描述

Python 中存在眾多的 Web 開發框架:Flask、Django、Tornado、Webpy、Web2py、Bottle、Pyramid、Zope2 等。近幾年較為流行的,大概也就是 Flask 和 Django 了。我們以這些 Web 開發框架作為關鍵字,在慕課網中搜索相關課程,查詢到的課程數量如下所示:

Web 開發框架 相應的課程數量
Django 17
Flask 15
Tornado 2
其余的框架 0

由此可見,Django 和 Flask 確實是 Python 領域中最主流的兩個 Web 開發框架,本節課我們就來介紹下 Flask 框架的特點,并簡單了解下 Flask 與 Django 框架的優缺點對比。

1. Flask 簡介

Flask 是一個輕量級的 Web 框架,使用 Python 語言編寫,較其他同類型框架更為靈活、輕便且容易上手,小型團隊在短時間內就可以完成功能豐富的中小型網站或 Web 服務的實現。

Flask 具有很強的定制性,用戶可以根據自己的需求來添加相應的功能,在保持核心功能簡單的同時實現功能的豐富與擴展,其強大的插件庫可以讓用戶實現個性化的網站定制,開發出功能強大的網站。

2. Flask 的特點

2.1 微框架

Flask 是一個 Python 實現的 Web 開發微框架,但是這個“”并不代表著 Flask 功能比較簡陋、有所欠缺。微框架中的 “微” 意味著:

  • Flask 旨在保持核心簡單而易于擴展
  • Flask 不會替用戶做出太多決策,比如使用何種數據庫;
  • Flask 的選項(比如使用何種模板引擎) 通常有多個,用戶很容易替換。

默認情況下,Flask 不包含數據庫抽象層、模板引擎、身份認證或其它任何已有多種庫可以勝任的功能,如下圖所示。然而,Flask 支持用擴展來給應用添加這些功能,應用程序可以很方便的集成這些擴展。眾多的擴展提供了數據庫集成、表單驗證、上傳處理、各種各樣的開放認證技術等功能。

圖片描述

2.2 約定優于配置

設計不好的框架通常需要多個配置文件,每一個都有許多設置選項,程序員需要記憶大量的參數配置。

但是 Flask 遵循約定優于配置(Convention Over Configuration),也稱作按約定編程是一種軟件設計范式。目的在于減少軟件開發人員所需要做出的決定的數量,從而將開發變得簡單,而又不失去其中的靈活性,開發人員僅僅需要規定應用中不符合約定的部分。

Flask 存在有眾多的配置選項,但是在初始狀況下,它們都有一個常用的默認值,并會遵循一些慣例。 例如:按照慣例,模板和靜態文件分別存儲在應用 Python 源代碼樹下的子目錄 templates 和 static 里。雖然這個配置可以修改,但通常不必這么做,尤其是在剛開始學習的時候。

3. Django 簡介

Django 是一個開放源代碼的 Web 應用框架,由 Python 寫成,它最初是被開發來用于管理一些以新聞內容為主的網站,即是CMS(內容管理系統)軟件。

Django 是一個遵循 MVC 設計模式的框架。MVC 是 Model、View、Controller 三個單詞的簡寫,分別代表模型、視圖、控制器。Django 也是一個 遵循 MVC 設計模式的框架。MTV 是 Model、Template、View 三個單詞的簡寫,分別代表模型、模版、視圖 。

4. Django 的特點

Django 是一個 Python 實現的 Web 開發重框架。重框架中的 “重” 意味著,Django 除了實現 Web 框架的基本功能,內置了大量的模塊,Django 的架構如下所示:

圖片描述

與 Flask 的架構相比,兩者的區別很明顯:

  • Flask 僅包含最核心的框架功能,沒有集成數據庫訪問、模板引擎等功能;
  • Django 不僅包含最核心的框架功能,還包含了數據庫訪問、模板引擎等功能。

Django 集成的功能模塊包括:

對象關系映射 (ORM, Ojbect Relation Model)

以 Python 類形式定義數據模型,ORM 將模型與關系數據庫關聯,得到一個非常容易使用的數據庫 API,同時也可以在 Django 中使用原始的 SQL 語句訪問數據庫。

表單處理

可以方便的生成各種表單模型,實現表單的有效性檢驗,可以方便的從定義的模型實例生成相應的表單。

模板引擎

Django 模板用于編寫 html 代碼,更快更方便的完成頁面開發,再通過在視圖中渲染模板,將生成最終的 html 字符串返回給客戶端瀏覽器。

后臺管理系統

Django 自帶一個 ADMIN site,類似于內容管理系統,不需要再花大量的工作來創建用戶和內容管理系統。

5. Flask 與 Django 的比較

5.1 兩個框架的區別

上面我們簡單介紹了 Flask 和 Django 這兩個 Web 開發框架,下面,我給大家總結一下這兩個框架的區別到底在哪里:

其實兩者最主要區別在于:Django 功能大而全,Flask 只包含基本的功能。

Django 采用一站式解決的思路,Django 集成有模板、表單、路由、認證、基本的數據庫管理等內建功能,開發者不用在選擇應用的基礎設施上花費大量時間。

Django 就像是一個裝潢好的房子(如下圖所示),它提供了各種家具,直接入住即可。

圖片描述

Flask 相對于 Django 而言是輕量級的 Web 框架。和 Django 不同,Flask 只提供了最核心的功能,輕巧、簡潔,通過定制第三方擴展來實現具體功能。

默認情況下,不包含數據庫抽象、用戶認證、表單驗證、發送郵件等其它 Web 框架經常包含的功能。Flask 依賴用各種靈活的擴展(比如郵件 Flask Mail,用戶認證 Flask Login,數據庫 Flask SQLAlchemy)來給Web應用添加額外功能。

Flask 就像是一個沒有裝潢的房子(如下圖所示),用戶需要自己選擇各種家具才可以入住。

圖片描述

5.2 新手入門推薦

Flask 是一個輕量級的 Web 框架,只提供核心服務,較其他同類型框架更為輕便且容易上手,適用于小型團隊在短時間內就可以完成功能豐富的中小型網站。與之相比,Django 是一個重量級的 Web 框架,內置許多常用的擴展,這些功能是由官方和社區共同維護的,其健壯性高,有利于保障項目質量。

推薦新手學習 Flask 框架,可以先從 Flask 開始,后使用 Django 重構。因為如果直接上 Django,作為新手,面對 Django 內置的各種繁雜功能產生很多疑惑。

就如同搭積木,如果直接給你一個搭好的模型,再拆開后(逆向過程),讓你指出每塊積木的作用,你可能會有疑惑。但是讓你親自一步步去搭好后(正向過程),再去拆解模型,你對每塊積木的都會有不錯的了解。

Flask 開發就像是這個正向過程,自己一步一步去集成想要的擴展,完善網站,每一步都親自動手做一遍,有助于理解 Web 開發的很多概念。Django 開發就像是逆向過程,Django 已經幫你集成了許多常用的擴展,用戶要做的去學習這些擴展的使用。

6. 本課程所需的前置基礎知識

Flask 是一個用于 Web 開發的框架,學習本課程之前,需要掌握一定的 Web 開發基礎,具體包括如下知識點:

  1. Python 的基本語法;
  2. Html 的常用標簽;
  3. Css 的基本知識;
  4. Javascript 的基本語法。

本課程面向 Python 初學者,Python 初學者在學習完 Python 基本語法后,希望用 Python 完成一個具體的項目,用于開發一個網站。

7. 小結

本節介紹了 Python Web 開發的兩個框架:Flask 和 Django,并對其進行了對比,使用思維導圖總結如下:

圖片描述