理解異步編程:Promise與async/await的應用

學習Python Web開發:使用Flask建立你的第一個網站


1. 介紹 Flask 與 Web 開發

Flask 是什麼?

Flask 是一個輕量組的 Python Web 框架,目標是提供簡潔而高效的 Web 開發環境。Flask 基於 WSGI 機制,允許開發者自由選擇許多延伸功能。

為什麼選擇 Flask?

  • 輕量易上手:Flask 不僅減少了組件複雜度,而且提供準備好的基礎功能。

  • 柔性高:可以根據需要自由加載載加功能,比如模板引擎、表單處理、資料庫等。

  • 絕不經過包裝:和 Django 相比,Flask 可以選擇自己需要的套件,而不需要包含一整套內建功能。

Flask 與 Django 比較

Django 適合建立大型平台,已經配備好數據庫組件與常用功能。Flask 則適合輕量小型應用或 API 服務。

2. 設置開發環境

在開始使用 Flask 之前,需要設置開發環境。

安裝 Flask

先確保已安裝 Python:

python --version

使用 pip 安裝 Flask:

pip install flask

建立虛擬環境:

python -m venv venv
source venv/bin/activate  # Mac/Linux
venv\Scripts\activate  # Windows

3. 建立第一個 Flask 應用

建立一個最基本的 Flask 程式:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    return "Hello, Flask!"

if __name__ == '__main__':
    app.run(debug=True)

使用 python app.py 啟動應用,然後在瀏覽器打開 http://127.0.0.1:5000/,將會看到 "Hello, Flask!"。

4. 使用 HTML 模板渲染網頁

Flask 使用 Jinja2 模板引擎來渲染 HTML:

templates/index.html

<!DOCTYPE html>
<html>
<head>
    <title>Flask Example</title>
</head>
<body>
    <h1>Hello, {{ name }}!</h1>
</body>
</html>

app.py

from flask import render_template

@app.route('/hello/<name>')
def hello(name):
    return render_template('index.html', name=name)

5. 處理表單与請求數據

使用 request 處理 POST 表單:

from flask import request

@app.route('/submit', methods=['POST'])
def submit():
    username = request.form['username']
    return f"Received: {username}"

6. 數據庫操作與 Flask-SQLAlchemy

from flask_sqlalchemy import SQLAlchemy

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80), nullable=False)

db.create_all()

7. 建立 API

from flask import jsonify

@app.route('/api/user/<int:id>')
def get_user(id):
    user = User.query.get(id)
    return jsonify({'id': user.id, 'name': user.name})

8. 部署 Flask 應用

使用 Gunicorn 與 Nginx 部署:

pip install gunicorn
gunicorn -w 4 app:app

在 VPS 上使用 systemd 啟動 Flask 應用,完成網站部署。

9. 進階學習

  • 詳細讀書:《Flask Web Development》

  • 擴展 Flask 功能:Flask-Login 安全驗證

  • 演算改善:資料庫繁銷處理

Flask 是一個充滿柔性與高效的 Python Web 框架,適合新手與有經驗的開發者使用。加油!


留言