如何为简单的开发和部署配置Django?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (33)

我倾向于用SQLite做开发,但是在一个活动服务器上,通常需要更健壮的东西(MySQL/PostgreSQL例如)。对于Django设置也总是有其他更改:不同的日志位置/强度、媒体路径等等。

如何管理所有这些更改,使部署成为一个简单、自动化的过程?

提问于
用户回答回答于

就我个人而言,我为项目使用了一个setings.py,我让它查找它所在的主机名(我的开发机器有以“Gabriel”开头的主机名,所以我只有以下内容:

import socket
if socket.gethostname().startswith('gabriel'):
    LIVEHOST = False
else: 
    LIVEHOST = True

在其他部分,我有这样的想法:

if LIVEHOST:
    DEBUG = False
    PREPEND_WWW = True
    MEDIA_URL = 'http://static1.grsites.com/'
else:
    DEBUG = True
    PREPEND_WWW = False
    MEDIA_URL = 'http://localhost:8000/static/'

等等。它的可读性有点差,但工作正常,并且可以节省多个设置文件的。

用户回答回答于

最新情况:Django-配置对于大多数人来说,这可能是一个比手工操作更好的选择。

如果你更喜欢用手做事,我先前的回答仍然适用:

我有多个设置文件。

  • settings_local.py-特定于主机的配置,如数据库名称、文件路径等。
  • settings_development.py-用于发展的配置,例如DEBUG = True...
  • settings_production.py-用于生产的配置,如SERVER_EMAIL...

我把这些都绑在一起settings.py首先导入的文件settings_local.py, settings_local.py-DEVELOPMENT_HOSTSPRODUCTION_HOSTS...settings.py platform.node()要查找正在运行的计算机的主机名,然后在列表中查找主机名,然后根据其在哪个列表中找到主机名,加载第二个设置文件。

这样,你唯一真正需要担心的就是settings_local.py与主机特定的配置一起更新文件,其他一切都会自动处理.

扫码关注云+社区