1. 程式人生 > >Flask實戰-留言板-使用Flask-DebugToolbar調試程序、Flask配置的兩種組織形式

Flask實戰-留言板-使用Flask-DebugToolbar調試程序、Flask配置的兩種組織形式

需要 字符串 pipe 浮動按鈕 方法 選項 們的 分享 com

使用Flask-DebugToolbar調試程序

擴展Flask-DebugToolbar提供了一系列調試功能,可以用來查看請求的SQL語句、配置選項、資源加載情況等信息。這些信息在開發時會非常有用。首先使用pipenv安裝Flask-DebugToolbar及其依賴:

技術分享圖片

然後實例化擴展提供的DebugToolExtension類,傳入程序實例APP,以完成擴展的初始化:

from flask immport Flask

from flask_debugtoolbar import DebugToolbarExtension

app = Flask(__name__
) toobar = DebugToolbarExtension(app)

開發時不需要也不建議使用Flask-DebugToolbar。Flask-DebugToolbar只在開啟了調試模式時才會啟動,所以我們要確保設置正確的FLASK_ENV環境變量值:開發時設為development;部署時則設為production。另外,Flask-DebugToolbar會攔截重定向請求,將DEBUG_TB_INTERCEPT_REDIRECTS配置變量設為False可以關閉這個特性

DEBUG_TB_INTERCEPT_REDIRECTS = false

這時啟動程序,就會發現頁面右側多了一個工具欄,單擊“Hide”按鈕可以隱藏為一個浮動按鈕,如下所示:

技術分享圖片

在調試工具欄中,除了Flask版本以及頁面的加載時間信息,右側的功能選項分別為:HTTP首部、請求相關變量、配置變量、模板渲染記錄、數據庫查詢記錄、日誌、路由列表、性能分析器。

技術分享圖片

Flask配置的兩種組織形式

在Flask中,開發和部署時通常需要不同的配置。比如,存儲在SECRET_KEY配置變量的秘鑰,在開發時可以使用占位字符,但在生產環境下部署時則需要使用一個隨機生成的字符串。為了區分,我們通常會有兩種組織這種分離的方式。

使用調試工具查看程序配置

技術分享圖片

環境變量優先

為了將配置和程序分離開來,建議通過環境變量來保存配置,並且對不同場景下的配置進行分離。

.env和.flaskenv文件可以存儲環境變量,對於包含敏感信息的配置,我們優先或僅從環境變量中讀取,這些環境變量統一在.env文件中定義,從而實現了敏感配置的分離。通過在.gitignore中添加這個文件,不會被提交進Git倉庫。

技術分享圖片

實例文件夾覆蓋

為了方便存儲開發和部署時的各類文件,Flask提供了實例文件夾支持(instance folder),我們可以在項目根目錄(程序包旁)中創建一個名稱為instance的文件夾,在這個文件夾中存儲開發或部署時使用的配置文件,包含敏感信息的文件,或是臨時創建的數據庫文件等。

如果將這個實例文件夾放到.gitignore文件夾中,可以確保不會被提交到Git倉庫中。

當使用示例文件夾存儲配置時,一個方便的做法是把包含敏感數據的配置放到instance文件夾的配置文件中,外部只保留通用的公開配置。Flask允許加載多次配置,重復的配置以最後定義的配置為準,所以我們可以使用instance文件夾中的配置來覆蓋通用配置:

app = Flask(__name__, instance_relative_config=True)
app.config.from_object(config)  # 通用配置
app.config.from_pyfile(config.py)  # instance文件夾下的配置

在創建程序實例時,我們將instance_relative_config參數設為True,這會告訴Flask我們的配置文件路勁是相對於實例文件夾的(默認是相對於程序實例根目錄的)。

臨時的數據庫文件可以放到實例文件夾中,實例文件夾的路徑可以通過app.instance_path屬性獲取,所以你可以使用下面的方法構建數據庫URI:

SQLALCHEMY_DATABASE_URI = ‘sqlite:///’ + os.path.join(app.instance_path, ‘data.db’)

Flask不會自動創建實例文件夾,所以你需要手動創建。在單腳本程序中,實例文件夾在腳本旁創建;在使用程序包的程序中,實例文件夾在程序包旁創建。

當我們使用flask shell命令時,輸出的信息會給出實例文件夾的合適位置。

Flask實戰-留言板-使用Flask-DebugToolbar調試程序、Flask配置的兩種組織形式