Flask(1)- 簡介
- 2021 年 7 月 10 日
- 筆記
- Flask, 測試高級進階技能系列 - Flask
背景
- 為啥要學,很久之前就學過點,沒寫文章
- 最近因為要寫機械人工具,其實就是簡單的純服務端工具
- 反正 flask 也挺簡單,一天快速過完
- 概念會直接搬教程的,實操自己敲一遍再總結
參考教程
//read.helloflask.com/c2-hello
//www.imooc.com/wiki/flasklesson
Flask 簡介
- 輕:Flask 是一個輕量級的 Web 框架,使用 Python 語言編寫
- 易:較其他同類型框架更為靈活、輕便且容易上手
- 快:小型團隊在短時間內就可以完成功能豐富的中小型網站或 Web 服務的實現
定製化
- Flask 具有很強的定製性,用戶可以根據自己的需求來添加相應的功能
- 在保持核心功能簡單的同時實現功能的豐富與擴展
- 其強大的插件庫可以讓用戶實現個性化的網站定製,開發出功能強大的網站
Flask 的特點
微框架
Flask 是一個 Python 實現的 Web 開發微框架,但是這個「微」並不代表着 Flask 功能比較簡陋、有所欠缺
微框架中的 「微」 意味着
- Flask 旨在保持核心簡單而易於擴展
- Flask 不會替用戶做出太多決策,比如使用何種數據庫;
- Flask 的選項(比如使用何種模板引擎) 通常有多個,用戶很容易替換
Flask 的擴展性
- 默認情況下,Flask 不包含數據庫抽象層、模板引擎、身份認證或其它任何已有多種庫可以勝任的功能
- 但是 Flask 支持用擴展來給應用添加這些功能,應用程序可以很方便的集成這些擴展
- 眾多的擴展提供了數據庫集成、表單驗證、上傳處理、各種各樣的開放認證技術等功能
約定優於配置
- 設計不好的框架通常需要多個配置文件,每一個都有許多設置選項,程序員需要記憶大量的參數配置
- 但是 Flask 遵循約定優於配置(Convention Over Configuration),也稱作按約定編程是一種軟件設計範式
- 目的在於減少軟件開發人員所需要做出的決定的數量,從而將開發變得簡單,而又不失去其中的靈活性,開發人員僅僅需要規定應用中不符合約定的部分
- Flask 存在有眾多的配置選項,但是在初始狀況下,它們都有一個常用的默認值,並會遵循一些慣例
- 例如:按照慣例,模板和靜態文件分別存儲在應用 Python 源代碼樹下的子目錄 templates 和 static 里
- 雖然這個配置可以修改,但通常不必這麼做,尤其是在剛開始學習的時候
Flask 與 Django 的比較
兩個框架的區別
其實兩者最主要區別在於:Django 功能大而全,Flask 只包含基本的功能
- Django 採用一站式解決的思路,Django 集成有模板、表單、路由、認證、基本的數據庫管理等內建功能,開發者不用在選擇應用的基礎設施上花費大量時間
- Django 就像是一個裝潢好的房子(如下圖所示),它提供了各種傢具,直接入住即可
Flask 相對於 Django 而言是輕量級的 Web 框架
- 和 Django 不同,Flask 只提供了最核心的功能,輕巧、簡潔,通過定製第三方擴展來實現具體功能
- 默認情況下,不包含數據庫抽象、用戶認證、表單驗證、發送郵件等其它 Web 框架經常包含的功能
- Flask 依賴用各種靈活的擴展(比如郵件 Flask Mail,用戶認證 Flask Login,數據庫 Flask SQLAlchemy)來給Web應用添加額外功能
- Flask 就像是一個沒有裝潢的房子(如下圖所示),用戶需要自己選擇各種傢具才可以入住
新手入門推薦
- Flask 是一個輕量級的 Web 框架,只提供核心服務,較其他同類型框架更為輕便且容易上手,適用於小型團隊在短時間內就可以完成功能豐富的中小型網站
- 與之相比,Django 是一個重量級的 Web 框架,內置許多常用的擴展,這些功能是由官方和社區共同維護的,其健壯性高,有利於保障項目質量。
- 推薦新手學習 Flask 框架,可以先從 Flask 開始,後使用 Django 重構,因為如果直接上 Django,作為新手,面對 Django 內置的各種繁雜功能產生很多疑惑
- 就如同搭積木,如果直接給你一個搭好的模型,再拆開後(逆向過程),讓你指出每塊積木的作用,你可能會有疑惑。但是讓你親自一步步去搭好後(正向過程),再去拆解模型,你對每塊積木的都會有不錯的了解
- Flask 開發就像是這個正向過程,自己一步一步去集成想要的擴展,完善網站,每一步都親自動手做一遍,有助於理解 Web 開發的很多概念
- Django 開發就像是逆向過程,Django 已經幫你集成了許多常用的擴展,用戶要做的去學習這些擴展的使用