我有两个设置文件:
我有多个变量来设置日志,上载等的路径。这些路径取决于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()
怎么样?这是正确的方法吗?