使用類組織配置
在實際需求中,我們往往需要不同的配置組合。例如,開發用的配置,測試用的配置,生產環境用的配置。為了能方便地在這些配置中切換,你可以把配置檔案公升級為包,然後為這些使用場景分別建立不同的配置檔案,但是最方便的做法是在單個配置檔案中使用python類來組織多個不同類別的配置。
下面的**是personalblog的配置檔案,現在它包含乙個基本配置類(baseconfig),還有其他特定的配置類,即測試配置類(testingconfig)、開發配置類(developmentconfig)和生產配置類(productionconfig),這些特定配置類都繼承自基本配置類。
personalblog/setting.py: 使用python類組織配置
importosimport
sysbasedir = os.path.abspath(os.path.dirname(os.path.dirname(__file__
)))#
sqlite uri compatible
win = sys.platform.startswith('
win')if
win:
prefix = '
sqlite:///
'else
: prefix = '
sqlite:////
'class
baseconfig(object):
secret_key = os.getenv('
secret_key
', '
secret string')
debug_tb_intercrept_redirects =false
sqlalchemy_track_modifications =false
mail_server = os.getenv('
mail_server')
mail_port = 465mail_use_ssl =true
mail_username = os.getenv('
mail_username')
mail_password = os.getenv('
mail_password')
mail_default_sender = ('
persnalblog admin
', mail_username)
personalblog_email = os.getenv('
persoanlblog_email')
personalblog_post_per_page = 10personalblog_mamage_post_per_page = 15personalblog_comment_per_page = 15
class
developmentconfig(baseconfig):
sqlalchemy_database_uri = '
sqlite:///
' + os.path.join(basedir, '
data-dev.db')
class
testingconfig(baseconfig):
testing =true
wtf_csrf_enabled =false
sqlalchemy_database_uri = '
sqlite:///:memory:'#
in-memory database
class
productionconfig(baseconfig):
sqlalchemy_database_uri = os.getenv('
database_url
', '
sqlite:///
' + os.path.join(basedir, '
data.db'))
config =
在新版本的配置中,我們為不同的使用場景設定了不同的資料庫url,避免互相干擾。生產環境下優先從環境變數database_url讀取,如果沒有獲取到則使用sqlite,檔名為data.db(在實際生產中我們通常會使用更健壯的dbms,這裡只是示例),在開發時用的資料庫檔名為data-dev.db,而測試時的配置則使用sqlite記憶體型資料庫卡。為了獲取資料庫檔案的路徑,我們使用os模組的方法建立了乙個定位到專案根目錄的basedir變數,最終的絕對路徑通過os.path模組的方法基於當前指令碼的特殊變數__file__獲取。
from personalblog.settings importconfig
personalblog')
config_name = os.getenv('
flask_config
', '
development
')
我們首先從配置檔案中匯入匹配配置名到配置類的config字典。為了方便修改配置型別,配置名稱會先從環境變數flask_config中匯入,從環境變數載入配置可以方便地在不改動**的情況下切換配置。這個值可以在.flaskenv檔案中設定,如果沒有獲取到,則使用預設值development,對應的配置類即developmentconfig。
在後續的示例中,我們都使用python類來組織配置。包含敏感資訊的配置會從環境變數獲取,這些配置值儲存在.env檔案中。當安裝了python-dotenv並使用flask內建的run命令啟動程式時,.env檔案的環境變數會被自動設定。
用Flask開發部落格實戰教程(1)
最後,你應該還能夠很舒服地 熟練地 編寫 python 強烈推薦熟悉 python 的 python 模組和包 現在我們必須開始安裝 flask 以及一些我們會用到的擴充套件。我首選的方式就是建立乙個 虛擬環境 這個環境能夠安裝所有的東西,而你的主 python 不會受到影響。另外乙個好處就是這種方...
koa2實戰個人筆記(二) 模板渲染引擎ejs
配置const views require koa views 註冊模板檔案,指定相應資料夾 extension ejs 引用 直接在路由中使用ctx.render函式,需要注意讀取檔案是非同步操作,要用await。router.get async ctx,next 語法 變數用 變數 語法取得變數...
使用hexo搭建個人部落格
安裝前先介紹幾個hexo常用的命令,後面為注釋 1 2 3 hexo g 完整命令為hexo generate,用於生成靜態檔案 hexo s 完整命令為hexo server,用於啟動伺服器,主要用來本地預覽 hexo d 完整命令為hexo deploy,用於將本地檔案發布到github上 np...