Flask使用類組織配置詳情

2022-09-22 00:51:10 字數 1680 閱讀 2297

在實際的專案中,我們一般都會建立三個環境:開發、測試和生產環境,這三種環境會使用不同的配置組合,為了能方便地切換配置,我們可以為不同的環境建立不同的配置檔案,但是最方便的做法是在單個配置檔案中使用python類來組織多個不同類別的配置。

例如下面是乙個應用的配置檔案settings.py,它包含乙個基本配置類baseconfig,

還有其他特定的配置類:

這些特定配置類都繼承自基本配置類。

import logging

import os

class baseconfig(object):

debug = true

secret_key = "qwertyuiop"

sqlalchemy_database_uri = "mysql://username:p程式設計客棧[email protected]:3306/app_db"

sqlalchemy_track_modifications = false

redis_url = "redis:"

level_name = logging.debug

class developconfig(baseconfig):

pass

class testconfig(baseconfig):

testing = true

sqlalchemy_database_uri = "mysql:"

class productconfig(baseconfig):

debug = false

level_name = logging.error

sqlalchemy_database_uri = os.getenv("database_url", "mysql://username:password@**.***.*.**:3306/app_db")

config_dict =

上述**中,首先建立了乙個基本配置類baseconfig並初始化了一些配置資訊,然後針對不同的環境建立了不同的類繼承自baseconfig類,重新設定了不同的配置資訊,例如資料庫url,測試環境與開發環境不同,生產環境優先從環境變數中獲取。

然後,建立了乙個字典來儲存配置名稱和配置類的對映,相當於提供了乙個配置資訊的訪問入口,可以根據指定的配置名稱來獲取對應的配置類。

編寫好了配置檔案,我們在應用主程式中建立flask例項 app 時,就可以使用後app.config.from_injfyobject()方法載入配置,

例如:from settings import config_dict

app = flask(__name__)

config_name = os.getenv('config_name', 'develop')

app.config.from_object(config_dict[config_name])

首先從配置檔案中匯入配置名稱和配置類的對映字典config_dict,從環境變數config_name讀取配置名稱,然後通過app.config.from_object()方法載入指定配置資訊,如果沒有讀取到config_name,預設使用develinjfyop,對應的配置類即developmentconfig。

flask支援多種方式載入配置資訊,除了上述的從 python 類中載入,還支援 從 json 檔案中載入、從 py 檔案中載入等,app.config類提供了不同的方法來載入不同格式的配置檔案,還是比較靈活的。

flask實戰 個人部落格 使用類組織配置

使用類組織配置 在實際需求中,我們往往需要不同的配置組合。例如,開發用的配置,測試用的配置,生產環境用的配置。為了能方便地在這些配置中切換,你可以把配置檔案公升級為包,然後為這些使用場景分別建立不同的配置檔案,但是最方便的做法是在單個配置檔案中使用python類來組織多個不同類別的配置。下面的 是p...

Notepad 7 4 2的配置使用詳情

之前有寫過一篇notepad的使用說明,沒想到稀里糊塗更新了幾次之後,我以前的配置什麼的全乾掉了,而且我開啟新版後,發現和以前還有點不一樣了。那就繼續這個高階版本再來一邊吧。1.zen coding 補全 解壓後得到 將這兩個框選的檔案扔到notepad軟體安裝根目錄的 plugins 資料夾裡就行...

Flask框架 07 模型使用配置

flask預設並沒有提供任何資料庫操作的api 我們可以選擇任何適合自己專案的資料庫來使用 flask中可以自己選擇資料,用原生語句實現功能,也可以選擇orm sqlalchemy,mongoengine sqlalchemy是乙個很強大的關係型資料庫框架,支援多種資料庫後台。sqlalchemy提...