起始运行的manage.py文件里面有以下代码:
from argparse import ArgumentParser
然后在后面添加setting参数:
lms.add_argument(
'--settings',
help="Which django settings module to use under lms.envs. If not provided, the DJANGO_SETTINGS_MODULE "
"environment variable will be used if it is set, otherwise it will default to lms.envs.dev")
同时设置默认参数:
lms.set_defaults(
help_string=lms.format_help(),
settings_base='lms/envs',
default_settings='lms.envs.dev',
startup='lms.startup',
)
然后在后面拼接setting文件路径:
if edx_args.settings:
os.environ["DJANGO_SETTINGS_MODULE"] = edx_args.settings_base.replace('/', '.') + "." + edx_args.settings
else:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", edx_args.default_settings)
这样,如运行基于Django的open_edx的manage命令参数为
lms runserver --settings=devstack 0.0.0.0:8000
则setting文件就会是lms/envs/devstack.py。
同时值得注意的是吗,在devstack.py的开头,有个这样的引入
from .common import *
这个不管是在devstack.py或者aws.py都有,意味着common.py作为公用的配置文件,也会载入setting。
因此,一般来说INSTALLED_APPS 会在common.py设置。