Django 区分测试环境和线上环境


1、创建测试环境的配置文件 local_settings.py

将数据库连接等配置参数全部改成测试环境对应的值。

2、修改manager.py 配置文件(我的是python3.8)

# 修改前
def main():
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dj_test.settings')
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    execute_from_command_line(sys.argv)


if __name__ == '__main__':
    main()
# 修改后
def main():
    if len(sys.argv) > 3:
        run_arg = sys.argv[2]
        if not run_arg.startswith('--settings'):
            os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dj_test.settings')
    else:
        os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dj_test.settings')
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    execute_from_command_line(sys.argv)


if __name__ == '__main__':
    main()

3、启动示例

(venv) macdeMac:dj_test mac$ python manage.py runserver  --settings='dj_test.local_settings'
Performing system checks...

System check identified no issues (0 silenced).
January 20, 2020 - 08:08:22
Django version 3.0.2, using settings 'dj_test.local_settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.