python - Django 项目的生产设置

标签 python django heroku production

我创建了一个生产设置.py,其中放置了所有生产环境变量和值,例如:

import dj_database_url
DATABASES['default'] =  dj_database_url.config()

我想我应该声明一个环境变量,例如

MYPROJECT_生产

并将其设置为

heroku config:add MYPROJECT_PRODUCTION=True导出 MYPROJECT_PRODUCTION=True

在settings.py(这是django默认创建的)中,我想我应该在文件末尾添加

import os
if os.environ.has_key('MYPROJECT_PRODUCTION') and os.environ.get('MYPROJECT_PRODUCTION')=='True':
    from production_settings import *

这是正确的做法吗?

尝试 python 管理 shell 时遇到导入错误

export DJANGO_SETTINGS_MODULE='myproject.settings'
export MYPROJECT_PRODUCTION=True
me@ubuntu:~/dev/python/django/myproject$ python manage.py shell
Error: Can't find the file 'settings.py' in the directory containing 'manage.py'. It appears you've customized things.
You'll have to run django-admin.py, passing it your settings module.
(If the file settings.py does indeed exist, it's causing an ImportError somehow.)

manage.py 与 settings.py 存在于同一文件夹中..仍然出现错误。

我检查了echo $MYPROJECT_PRODUCTION,它输出True

最佳答案

就个人而言,我将生产设置保留在 settings.py 中,然后包含一个 local_settings.py 文件(使用 .hgignore 将其排除在版本控制之外)。

我将以下内容添加到settings.py的末尾

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

然后在我的 local_settings.py 中覆盖适当的设置 -

DEBUG = True

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'tag',
        'USER': 'tag',
        'PASSWORD': 'tag',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

我的印象是这是一个相当常用的方法(我从同事那里学到了它,但我也看到过它的博客)

编辑

为了回应 balazs 非常好的观点,您可能会包含此方法的变体,以保持敏感数据的私密性。也许在 local_settings 导入后包含以下内容 -

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

然后从版本控制中排除 product_settings.py。我想您可能需要使用不同的方法来部署 product_settings.py,但我认为这没什么大不了的。

关于python - Django 项目的生产设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14452663/

相关文章:

python - 将基于字符串的 NaN 转换为 numpy NaN

Django 和外键反向关系

python - 如何在 Mac OSX 上将 Python 的默认版本设置为 3.x 与 2.7?

django - 在 django admin 中隐藏 "add", "change", "delete" Action

Heroku CLI 突然崩溃

django - 将 Django 应用程序从 Heroku 迁移到 Linux 服务器

python - 在 Heroku 上安装 Spynner

python - Django 密码验证器 : If any three of the validations pass user can go ahead

python - PYLINT - 大量 "missing final newline"消息

python - 如何在没有表单的情况下直接在django中将项目添加到数据库