在Django中实现生产设置

时间:2017-01-19 17:27:52

标签: django django-settings

我无法理解从本地切换到生产设置以部署Django项目。如果重要的话,我正在使用Ubuntu虚拟机(VM)。

我了解如何配置设置。我了解创建设置文件的最佳实践(base.py,local.py,production.py,blah,blah)。我知道在本地开发DEBUG = True,在生产中DEBUG = False,blah,blah。

但是如何在部署中实现此切换?我摆脱了local.py吗?我是否创建了某种逻辑,以便我的VM只读取base.py和production.py?

最好的方法是什么?

2 个答案:

答案 0 :(得分:0)

我不确定最好的方法,但我的工作方式......

在我的settings.py脚下,我有:

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

我将所有本地开发设置保存在local_settings.py中,该设置覆盖任何生产设置。我也确保不上传我的local_settings.py文件!

答案 1 :(得分:0)

您可以做的是检查您的设置py目前使用的环境。 为此,您可以在系统上设置一个环境变量,该变量在您的开发环境和生产环境中具有不同的值。

您可以通过

设置这些环境变量
sudo -H gedit /etc/environment

并在文件中添加以下行:

DEBUG="true"

(要使此更改可用,您必须注销并重新登录系统)

在生产环境中,您将设置DEBUG =“false”。
然后你可以在settings.py中执行此操作:

DEBUG = os.environ.get('DEBUG', 'true') != 'false'

然后您可以根据使用的环境设置不同的设置:

if DEBUG:
    STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
else:
    STATICFILES_STORAGE = STATICFILES_STORAGE = 'custom_storages.StaticStorage'

(如果在开发环境中,上面的设置使用本地django服务器来提供静态文件,如果在生产环境中(在custom_storages模块中定义),则使用boto的amazon s3

通过这种方式,您可以推送更新,并始终根据环境选择正确的设置。