按照有关添加env数据库设置的说明后,我正在尝试让我的本地dev django应用程序正常工作。
https://devcenter.heroku.com/articles/django-injection
我按照说明操作,但在我的应用尝试访问本地数据库时出现以下错误
Request Method: GET
Request URL: http://localhost:8000
Django Version: 1.4
Exception Type: ImproperlyConfigured
Exception Value:
You need to specify NAME in your Django settings file.
我最初的数据库设置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'db', # Or path to database file if using sqlite3.
'USER': 'foo', # Not used with sqlite3.
'PASSWORD': 'bar', # Not used with sqlite3.
'HOST': 'localhost',
'PORT': '5432',
}
}
heroku文章说要将以下内容添加到设置文件
import dj_database_url
DATABASES = {'default': dj_database_url.config(default='postgres://localhost')}
当dATABASE_URL在开发中不可用时,如何让dj_database_url.config使用我的开发设置?
答案 0 :(得分:39)
您可以将您的开发设置添加到默认值,例如...
import dj_database_url
DATABASES = {'default': dj_database_url.config(default='postgres://foo:bar@localhost:5432/db')}
答案 1 :(得分:13)
在settings.py中使用此功能:
DATABASES = {'default': dj_database_url.config(default=os.environ['DATABASE_URL'])}
并在你的.env文件中有这个:
DATABASE_URL=postgres://localhost/yourdbname
当您使用“foreman start”启动时,它将查看.env文件并创建所有这些环境变量,就像在Heroku上运行一样。键入“heroku config”以确认您已设置DATABASE_URL,如果添加了postgres数据库插件,则应该这样做。
答案 2 :(得分:8)
只需在操作系统上设置一个环境变量,然后检查它们是否已设置。例如,使用UNIX系统:
# In ~/.bash_profile
export LOCAL_DEV=true
# In settings.py
import dj_database_url
DATABASES = {'default': dj_database_url.config(default='postgres://localhost')}
if bool(os.environ.get('LOCAL_DEV', False)):
# Override DATABASES['default'] with your local database configuration
此外,如果您需要在heroku空间set an environment variable:
heroku config:add MY_VAR='my_value'
答案 3 :(得分:5)
我刚试过这个,这是我的代码:
import dj_database_url
local_db = 'postgres://django_login:123456@localhost/django_db'
DATABASES = {'default': dj_database_url.config(default=local_db)}
我的数据库名称是“django_db”,用户名是“django_login”,密码是“123456”。
我的代码可以在本地计算机和heroku中运行。
答案 4 :(得分:1)
import dj_database_url
DATABASES = {'默认': dj_database_url.config(缺省值= 'postgres的:// <强> yourusername 强>:<强>你的密码强> @的 yourhosturl 强>:5432 / <强> yourdbname 强>') }
**用您的数据库设置替换粗体字符串 如果您使用的是本地数据库,请将 yourhosturl 替换为 localhost