在 Flask 的 blueprint 如何讀取 Config ?
在 Flask 的 Blueprint(藍圖)中,不能直接使用 app.config["KEY"],因為 Blueprint 本身不認識 app,但可以透過 current_app.config["KEY"] 來存取設定參數。
1. config.py(設定檔)
import os class Config: SECRET_KEY = "my_secret_key" DATABASE_URL = "sqlite:///mydb.sqlite3" DEBUG = True
2. app.py(載入設定並註冊 Blueprint)
from flask import Flask from config import Config from auth import auth # 匯入 Blueprint app = Flask(__name__) app.config.from_object(Config) # 載入設定 # 註冊 Blueprint app.register_blueprint(auth, url_prefix="/auth") if __name__ == "__main__": app.run(debug=True)
3. auth.py(會員功能 Blueprint,存取 Config)
在 Blueprint 內 使用 current_app.config["KEY"] 來存取設定:
from flask import Blueprint, current_app auth = Blueprint("auth", __name__) @auth.route("/config") def show_config(): return { "secret_key": current_app.config["SECRET_KEY"], "database_url": current_app.config["DATABASE_URL"], "debug_mode": current_app.config["DEBUG"], }
4. 測試 API
啟動 Flask,然後訪問 http://localhost:5000/auth/config
{ "secret_key": "my_secret_key", "database_url": "sqlite:///mydb.sqlite3", "debug_mode": true }
✅ 結論
✅ Flask 的 Blueprint 不能直接存取 app.config,但可以用 current_app.config["KEY"]
✅ current_app 代表當前運行的 Flask 應用程式,適用於 Blueprint 環境
✅ 適用於 Blueprint 的路由、服務、API 讀取 Flask 設定
這樣就能讓 Blueprint 也能靈活存取 Flask 設定!
留言板
歡迎留下建議與分享!希望一起交流!感恩!