动态创建Django设置变量

时间:2020-04-28 08:34:34

标签: python django django-settings

我有两个设置文件:

  • settings_commons.py,其中包含所有实例通用的变量
  • settings_prod.py产品实例特定的变量
  • settings_dev.py开发人员实例专用的变量

我有多个变量来设置日志,上载等的路径。这些路径取决于MNT_DATA_DIR,每个实例(dev,prod等)都不同。我不想在每个实例设置文件中都重复这些路径。

我在settings_commons.py中做什么

MNT_DATA_DIR_DEPENDENT_VARS = (
    ('FILE_DIR', os.path.join('{MNT_DATA_DIR}', "file_root")),
    ('LOG_DIR', os.path.join('{MNT_DATA_DIR}', "logs", "lab")),
    ...
)

FILE_DIR_DEPENDENT_VARS = (
    ('IMPORT_DATA_DIR', os.path.join('{FILE_DIR}', "Import")),
    ('REMOTE_DATA_DIR', '{FILE_DIR}'),
    ...
)

然后在特定于实例的文件中

from .settings_commons import *

MNT_DATA_DIR = '/mnt/dir'

for item in MNT_DATA_DIR_DEPENDENT_VARS:
    globals()[item[0]] = item[1].format(MNT_DATA_DIR=MNT_DATA_DIR)

for item in FILE_DIR_DEPENDENT_VARS:
    globals()[item[0]] = item[1].format(FILE_DIR=FILE_DIR)

这种方法会引起任何问题吗?使用setattr()代替globals()怎么样?这是正确的方法吗?

0 个答案:

没有答案
相关问题