如何在Django中管理本地和生产环境的设置?
如何在Django中管理本地和生产环境的设置?
如何处理本地开发和生产服务器的设置是推荐的方式?其中一些设置(如常量等)可以在两者中进行更改/访问,但有些设置(如静态文件的路径)需要保持不同,因此不应该每次部署新代码时都被覆盖。
目前,我将所有常量添加到settings.py
中。但每次我在本地更改一些常量时,我都必须将其复制到生产服务器并编辑生产特定的更改... 🙁
编辑:看起来没有标准的答案来解决这个问题,我已经接受了最流行的方法。
admin 更改状态以发布 2023年5月19日
《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.py
和 production.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 上分享了一个示例项目布局模板。