Flask + SQLite 網頁快速開發 (一) - Flask 簡介 + 工作流程
學習前具備知識:
- Python3
- 基礎網頁前端 (HTML、CSS、JS) 和後端知識
- 一點點資料庫概念
The series is my own notes derived from QUT IFN557 unit, Rapid Web Development.
簡介
Flask 是一個使用 Python 編寫的輕量級 Web 應用框架。基於 Werkzeug WSGI 工具箱 (HTTP library) 和 Jinja2 模板引擎 (template engine)。
WSGI:是為 Python 語言定義的「Web 伺服器」和「Web 應用程式或框架」之間的一種簡單而通用的介面。
本來只是作者的一個愚人節玩笑,但是意外受到歡迎成為一個正式的專案。
輕量級 Web 開發框架,主要的面向是需求簡單,項目週期短的小型網頁應用程式。
Flask 又被稱為 microframework,因為它只實行了網頁基本的核心,沒有預設的資料庫、表單驗證功能,但是因為它有著彈性的擴展特性,也就是 Flask-extension 功能,可以引入網路上很多其他人依照 Flask 的特性寫好的 package,可以在 PyPI 上找到。
如果要自己寫 Flask 擴展套件,可以參考:Flask Extension Development
常見 Flask 擴展套件
粗體字是這個系列中會使用到的套件。
- Flask-SQLalchemy:操作市面上常見資料庫,包含這個系列要使用的 SQLite
- Flask-Bootstrap:應用 Bootstrap
- Flask-WTF:表單樣式及其驗證
- Flask-migrate:管理遷移資料庫
- Flask-Mail:郵件
- Flask-script:插入 script 腳本
- Flask-Login:認證用戶狀態
- Flask-RESTful:開發 REST API 的工具
- Flask-Moment:利用 moment.js 套件操作日期和時間
如果想更深入了解請參考:
Flask 官網
Flask 中文文件
Django
Python 有另一個相當知名的 Web 框架:Django,和 Flask 相比它沒有那麼輕量級。因為 Django 在某些功能上比較全面,它提供搭配好的解決方案,不需要開發者自己決定:要不要額外引入擴展套件? 像是在操作資料庫方面,它就有自己的方法:使用 django.db
中的 models
和 Django ORM
來操作資料庫。但是相較之下,就沒有 Flask 那麼彈性。
Django 採用了 MVT 的軟體設計模式,即模型 (Model),視圖 (View) 和模板 (Template),此外還整合了 ORM 和後台管理。適合快速開發的大型網頁應用程式。
如果想更深入了解請參考:
Django 官網
工作流程
- 預先準備好 View 視圖 (HTML + CSS)
- 基礎 Flask 入門
- class 設計 (Data Model) + 寫死的假資料
- 以裝飾器 @ 處理路由和相對應函式
- 以 Jinja2 模板引擎修改 HTML
- 修改 class,修改成可以寫入 SQLite 資料庫的模式
- 創建和測試資料庫 + 寫入資料