3

我正在尝试模块化我的 django 设置文件,以便更容易部署和管理我们的多个环境。

我已将其设置为按此顺序加载我的文件...

  1. settings.py - 所有人通用的设置
  2. config/country_XX - 特定于该国家/地区的安装设置(XX 可以是美国、加拿大、澳大利亚等)
  3. config/developer_XX - 特定于特定开发人员的本地开发环境的设置

两个辅助文件都允许更改在以前文件中设置的值

我发现如果 1 使用正常加载 2 和 3

from config.country_XX import *

我在这些文件中所做的更改被保留。

但是,如果 1 加载 2 和 3 使用

__import__() 

或者

importlib.import_module()

我所做的更改不会被保留。

我更喜欢使用 import_module 因为它可以让我编写更简洁的代码

import_module('config.country_' + country)

代替

if country = 'AA':
  from config.country_AA import *
elif: country == 'BB'
  from config.country_BB import *
...

这就是我所拥有的……让我知道你的想法。

设置.py

import os
import sys
from django.utils import importlib

DEVELOPMENT = True
DEBUG = False
USES_24_HOUR_TIME = True

country_config = 'config.country_us'
developer_config = 'config.developer_jack'
try:
    #importlib.import_module(country_config)
    from config.country_us import *

    if DEVELOPMENT:
        #importlib.import_module(developer_config)
        from config.developer_jack import *

except ImportError:
    pass

配置/country_us.py

import sys
globals().update(vars(sys.modules['settings']))

USES_24_HOUR_TIME = False

配置/developer_jack.py

import sys
globals().update(vars(sys.modules['settings']))

DEBUG = True
4

0 回答 0