Python-如何在Django中管理本地和生产设置?
建议处理本地开发和生产服务器设置的建议方式是什么?它们中的某些(例如常量等)可以在两者中进行更改/访问,但是其中一些(例如静态文件的路径)需要保持不同,因此,每次部署新代码时都不应覆盖它们。
当前,我将所有常量添加到中settings.py
。但是每次我在本地更改某些常量时,都必须将其复制到生产服务器并编辑文件以进行生产特定更改… :(
编辑:这个问题似乎没有标准答案,我已经接受了最受欢迎的方法。
-
建议处理本地开发和生产服务器设置的建议方式是什么?它们中的某些(例如常量等)可以在两者中进行更改/访问,但是其中一些(例如静态文件的路径)需要保持不同,因此,每次部署新代码时都不应覆盖它们。
当前,我将所有常量添加到中
settings.py
。但是每次我在本地更改某些常量时,都必须将其复制到生产服务器并编辑文件以进行生产特定更改… :(编辑:这个问题似乎没在
settings.py
:try: from local_settings import * except ImportError as e: pass
你可以覆盖需要的内容
local_settings.py
;然后,它应该脱离版本控制。但是由于你提到复制,我猜你没有使用;)有标准答案,我已经接受了最受欢迎的方法。 -
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