Flask 路由與視圖函數綁定機制
核心概念
在 Flask 框架中,路由(Route) 是連接 URL 路徑與 Python 函數的橋梁,通過 @app.route()
裝飾器實現這種綁定關系,使得當用戶訪問特定 URL 時,對應的函數會被自動調用。
工作原理
-
裝飾器綁定
- 使用
@app.route('URL路徑')
裝飾器修飾函數 - 裝飾器會在 Flask 應用初始化時,將函數與指定 URL 路徑關聯起來
- 內部維護一張"URL路徑→函數"的映射表
- 使用
-
請求處理流程
用戶訪問 URL → Flask 解析路徑 → 查找映射表 → 執行對應函數 → 返回結果給瀏覽器
代碼示例
from flask import Flask
app = Flask(__name__)# 將根路徑 '/' 與 hello_world() 函數綁定
@app.route('/')
def hello_world():return 'Hello World!'# 將 '/user' 路徑與 show_user() 函數綁定
@app.route('/user')
def show_user():return 'This is user page'if __name__ == '__main__':app.run() # 啟動服務器,開始監聽請求
訪問效果
訪問的URL | 觸發執行的函數 | 瀏覽器顯示內容 |
---|---|---|
http://127.0.0.1:5000/ | hello_world() | Hello World! |
http://127.0.0.1:5000/user | show_user() | This is user page |
關鍵特點
- 無需顯式調用:視圖函數不需要手動調用,由 Flask 框架在收到對應請求時自動觸發
- 靈活的路徑配置:可通過裝飾器為不同函數配置不同路徑
- 開發便捷性:開發者只需關注"訪問該路徑時返回什么內容",無需處理底層請求解析邏輯
擴展知識
- 一個函數可以綁定多個 URL 路徑
@app.route('/') @app.route('/home') def home():return 'Welcome to homepage'
- 支持動態 URL 路徑(帶參數)
@app.route('/user/<username>') def show_profile(username):return f'User: {username}'
通過這種機制,Flask 實現了 URL 路徑與業務邏輯的解耦,讓 Web 開發更加直觀高效。