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 中的 modelsDjango ORM 來操作資料庫。但是相較之下,就沒有 Flask 那麼彈性。

Django 採用了 MVT 的軟體設計模式,即模型 (Model),視圖 (View) 和模板 (Template),此外還整合了 ORM後台管理。適合快速開發的大型網頁應用程式

如果想更深入了解請參考:
Django 官網

工作流程

  1. 預先準備好 View 視圖 (HTML + CSS)
  2. 基礎 Flask 入門
  3. class 設計 (Data Model) + 寫死的假資料
  4. 以裝飾器 @ 處理路由和相對應函式
  5. 以 Jinja2 模板引擎修改 HTML
  6. 修改 class,修改成可以寫入 SQLite 資料庫的模式
  7. 創建和測試資料庫 + 寫入資料