Flask + SQLite

Python 建立網站使用心得站

整理用 Python 建網站的經驗、踩坑與實作心得,讓安裝、環境、Flask 與部署實作更容易上手。

閱讀方向

從環境建置開始,逐步整理 Flask、虛擬環境、套件管理與實戰心得。

網站管理員 ・ 2026-03-31 15:57:40 ・ 約 3 分鐘

Flask 最重要的四件事:路由、模板、表單、SQLite 怎麼串起來

如果你剛開始學 Flask,我覺得最值得先搞懂的,不是一次學很多套件,而是先把四件事情弄通:路由、模板、表單、SQLite。因為一個最基本的網站,幾乎就是靠這四個部分串起來的。只要這條資料流你看得懂,後面不管你加會員、後台、搜尋、留言或其他功能,原理都差不多。 第一個是路由。路由就是 Flask 負責判斷「某個網址進來時,應該執行哪一段...

如果你剛開始學 Flask,我覺得最值得先搞懂的,不是一次學很多套件,而是先把四件事情弄通:路由、模板、表單、SQLite。因為一個最基本的網站,幾乎就是靠這四個部分串起來的。只要這條資料流你看得懂,後面不管你加會員、後台、搜尋、留言或其他功能,原理都差不多。

第一個是路由。路由就是 Flask 負責判斷「某個網址進來時,應該執行哪一段 Python 函式」。例如:

python
@app.route("/")
def index():
    return "Hello Flask"

這代表當使用者打開首頁 `/` 時,就會執行 `index()`。如果你再加一個文章頁:

python
@app.route("/post/<int:post_id>")
def post_detail(post_id):
    return f"Post {post_id}"

那 Flask 就會知道 `/post/1`、`/post/2`、`/post/3` 這些網址要交給同一個函式,但帶不同的 `post_id` 進來。也就是說,路由決定了網址和後端邏輯的對應關係。

第二個是模板。單純回傳字串只適合測試,真的做網站通常會改成 HTML 模板。Flask 最常見的作法是把 HTML 放在 `templates` 資料夾,再用 `render_template()` 回傳。像這樣:

python
@app.route("/")
def index():
    return render_template("index.html")

如果你要把資料送進模板,例如文章列表:

python
@app.route("/")
def index():
    posts = [
        {"title": "第一篇"},
        {"title": "第二篇"},
    ]
    return render_template("index.html", posts=posts)

那在 HTML 裡就可以這樣使用:

html
{% for post in posts %}
  <h2>{{ post.title }}</h2>
{% endfor %}

這裡的概念很重要:Python 負責準備資料,模板負責顯示資料。兩邊分工清楚,網站才會好維護。

第三個是表單。網站不只是顯示內容而已,很多時候還要接收使用者輸入。像登入、新增文章、搜尋欄位、聯絡表單,本質上都是表單。最基本的 HTML 會像這樣:

html
<form method="post">
  <input name="title" type="text">
  <textarea name="content"></textarea>
  <button type="submit">送出</button>
</form>

對應的 Flask 路由就可以接收:

python
@app.route("/create", methods=["GET", "POST"])
def create():
    if request.method == "POST":
        title = request.form.get("title", "")
        content = request.form.get("content", "")
        return f"{title}: {content}"
    return render_template("create.html")

這裡你要理解的是,表單其實就是把瀏覽器裡的資料送回 Flask,而 Flask 收到後再決定要儲存、驗證、轉址,還是回傳錯誤訊息。

第四個是 SQLite。當你不只是想顯示固定文字,而是真的要把資料存下來時,就需要資料庫。對 Flask 初學者來說,SQLite 很適合起步,因為它不用另外裝資料庫服務,直接是一個檔案就能用。

最簡單的流程大概像這樣:

python
import sqlite3

db = sqlite3.connect("site.db")
db.execute(
    "INSERT INTO posts (title, content) VALUES (?, ?)",
    (title, content),
)
db.commit()

查資料時則像這樣:

python
rows = db.execute("SELECT title, content FROM posts ORDER BY id DESC").fetchall()

把這一步跟模板連起來後,你的網站就會變成:表單送出內容 -> Flask 收到 -> SQLite 存起來 -> 首頁重新查詢 -> 模板把最新文章顯示出來。這就是一個最小內容網站最核心的資料流。

如果把這四件事串起來,你其實就已經理解一個基本網站在怎麼運作。路由負責接網址,模板負責畫頁面,表單負責收輸入,SQLite 負責存資料。只要這條線打通,你就不再只是「看懂 Flask 範例」,而是真的開始能自己做網站。

所以我會建議初學者先不要急著加太多東西。先做一個有首頁、文章列表、新增表單、SQLite 存取的最小站台,把這四個部分串順。只要這一步穩了,後面加後台登入、文章詳情頁、刪除與編輯、部署與網域,其實都只是往這條主線繼續延伸而已。

回首頁