3

複数の環境を簡単に展開および管理できるように、django 設定ファイルをモジュール化しようとしています。

この順序でファイルをロードするように設定しました...

  1. settings.py - すべてに共通の設定
  2. config/country_XX - その国のインストールに固有の設定 (XX は US、CA、AU など)
  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

config/country_us.py

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

USES_24_HOUR_TIME = False

config/developer_jack.py

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

DEBUG = True
4

0 に答える 0