链接多个django设置文件时__import__或import_module vs import

时间:2012-03-21 06:43:16

标签: python django settings django-settings

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

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

  1. settings.py - 所有
  2. 共有的设置
  3. config / country_XX - 特定于该国家/地区的安装设置(XX可能是美国,加州,澳大利亚等)
  4. config / developer_XX - 特定于特定开发人员的本地开发环境的设置
  5. 允许两个辅助文件更改先前文件中设置的值

    我发现如果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 *
    ...
    

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

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

0 个答案:

没有答案