如何在Django中管理本地和生产环境的设置?

13 浏览
0 Comments

如何在Django中管理本地和生产环境的设置?

如何处理本地开发和生产服务器的设置是推荐的方式?其中一些设置(如常量等)可以在两者中进行更改/访问,但有些设置(如静态文件的路径)需要保持不同,因此不应该每次部署新代码时都被覆盖。

目前,我将所有常量添加到settings.py中。但每次我在本地更改一些常量时,我都必须将其复制到生产服务器并编辑生产特定的更改... 🙁

编辑:看起来没有标准的答案来解决这个问题,我已经接受了最流行的方法。

admin 更改状态以发布 2023年5月19日
0
0 Comments

settings.py中:

try:
    from local_settings import *
except ImportError as e:
    pass

你可以在local_settings.py中覆盖必要的内容;这样它就不会被版本控制所跟踪。但是,既然你提到了复制,我猜你没有使用这个方法;)

0
0 Comments

《Django 1.5 最佳实践》建议使用版本控制对您的设置文件进行管理,并将文件存储在单独的目录中:

project/
    app1/
    app2/
    project/
        __init__.py
        settings/
            __init__.py
            base.py
            local.py
            production.py
    manage.py

base.py 文件包含通用设置(如 MEDIA_ROOT 或 ADMIN),而 local.pyproduction.py 则包含特定于站点的设置:

在基础文件 settings/base.py 中:

INSTALLED_APPS = (
    # common apps...
)

在本地开发设置文件 settings/local.py 中:

from project.settings.base import *
DEBUG = True
INSTALLED_APPS += (
    'debug_toolbar', # and other apps for local development
)

在生产环境的设置文件 settings/production.py 中:

from project.settings.base import *
DEBUG = False
INSTALLED_APPS += (
    # other apps for production site
)

然后当您运行 Django 时,需要添加 --settings 选项:

# Running django for local development
$ ./manage.py runserver 0:8000 --settings=project.settings.local
# Running django shell on the production site
$ ./manage.py shell --settings=project.settings.production

该书的作者们还在 Github 上分享了一个示例项目布局模板

0