【问题标题】:Django Local to Production Setup: just change manage.py?Django 本地到生产设置:只需更改 manage.py?
【发布时间】:2016-12-01 21:37:01
【问题描述】:

目前我的manage.py 文件被硬编码以导入我的local.py - 开发设置文件。这是设置它的“行业标准”方式吗?当我部署到服务器时,我是否只需更改 manage.py 以指向我的生产设置文件?还是我应该以另一种方式进行设置?

#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    # Hard coded imports local settings file
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings.local")

    from django.core.management import execute_from_command_line

    execute_from_command_line(sys.argv)

结构:

project/
   manage.py
   settings/
      local.py
      shared.py
      production.py

【问题讨论】:

标签: python django


【解决方案1】:

没有。 manage.py 与在生产环境中运行 Django 没有任何关系,因此更改它根本无济于事。

【讨论】:

  • 想必他在wsgi.py会有类似的代码。
【解决方案2】:

我认为您希望尽可能避免编辑 manage.py。

解决此问题的另一种方法是使用默认的settings.py 文件,但使用第二个local_settings.py 文件对其进行扩展。

您可以通过将以下内容放在 settings.py 文件的末尾来做到这一点:

locset = os.path.join(os.path.dirname(__file__), 'local_settings.py')
if os.path.exists(locset):
    with open(locset) as f:
        code = compile(f.read(), "local_settings.py", 'exec')
        exec(code)

我通常将 DEBUG 和数据库设置保存在此 local_settings.py 文件中。

执行此操作时,您应该确保将local_settings.py 添加到您的.gitignore

我还在settings.py 文件旁边包含此文件的示例版本,local_settings.py.sample 减去任何敏感密码/用户名信息。

此文件包含在 repo 中,因此新手可以创建他们的数据库/用户并填写缺失的部分。他们只需要重命名它减去 .sample 扩展名就可以了。

这是一种针对不同环境(无论是本地环境、生产环境还是团队成员之间的本地环境)进行变体设置的简单而有效的方法。

【讨论】:

    【解决方案3】:

    我的应用程序有一个设置文件,但这些值是从配置文件中读取的,而不是硬编码的。例如,DATABASES 部分如下所示:

    import ConfigParser
    
    config = ConfigParser.ConfigParser()
    config.read('app.conf')
    
    DATABASES = {
        'default': {
            'ENGINE': config.get('database', 'engine'),
            'NAME': config.get('database', 'name'),
            'USER': config.get('database', 'user'),
            'PASSWORD': config.get('database', 'password'),
            'HOST': config.get('database', 'host'),
            'PORT': config.get('database', 'port'),
        }
    }
    

    并且开发和生产服务器每个都有自己的app.conf 文件(作为一个很好的附带好处,这些文件被排除在版本控制之外)。

    【讨论】:

      猜你喜欢
      • 2012-07-05
      • 2020-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-11
      • 1970-01-01
      • 2012-09-14
      相关资源
      最近更新 更多