django環境處理

settings.py

django的配置放在settings.py文件中redis

可是這主要應用於開發人員的測試,開發數據庫

由於一個項目通常都有幾個環境,好比dev環境,beta環境,prod環境,並且每一個環境的數據庫,redis等等配置都是不一樣的django

若是配置都放於settings中,咱們使用不一樣的環境時就十分麻煩測試

能夠使用下面的處理方式spa

首先將公共的配置放於settings中,將不一樣的環境所需的配置分別放在本身的配置文件中如:dev.py,beta.py,prod.py等等code

而後在settings中就能夠根據不一樣的環境進行引入對應的配置以覆蓋settings中的配置orm

讀取環境使用os模塊:blog

print(os.environ.get("ENV", None))
os.environ["ENV"] = "dev"
print(os.environ.get("ENV", None))
輸出:
None
dev

根據讀取的環境將環境文件中的配置加到環境變量開發

ENV = os.environ.get('ENV', 'dev')
if ENV:
    import importlib
    import re
    # 倒入配置文件包
    module = importlib.import_module('project.env.{}'.format(ENV))
    for name in dir(module):
        if not re.match('^__', name):
            globals()[name] = module.__dict__[name]
相關文章
相關標籤/搜索