在 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 設定!