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

2022-06-11 05:15:08 字數 2682 閱讀 5416

使用類組織配置

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

下面的**是personalblog的配置檔案,現在它包含乙個基本配置類(baseconfig),還有其他特定的配置類,即測試配置類(testingconfig)、開發配置類(developmentconfig)和生產配置類(productionconfig),這些特定配置類都繼承自基本配置類。

personalblog/setting.py: 使用python類組織配置

import

osimport

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 import

config

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...