Ответ 1
Вы можете просто добавить свои настройки dev к значениям по умолчанию, подобным этому...
import dj_database_url
DATABASES = {'default': dj_database_url.config(default='postgres://foo:[email protected]:5432/db')}
Я пытаюсь заставить свое местное приложение dev django работать после выполнения этих инструкций по добавлению настроек базы данных env.
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')}
как мне получить dj_database_url.config для использования моих настроек моего dev, когда DATABASE_URL недоступен в dev?
Вы можете просто добавить свои настройки dev к значениям по умолчанию, подобным этому...
import dj_database_url
DATABASES = {'default': dj_database_url.config(default='postgres://foo:[email protected]:5432/db')}
Используйте это в своих настройках .py:
DATABASES = {'default': dj_database_url.config(default=os.environ['DATABASE_URL'])}
и в вашем .ENV файле есть следующее:
DATABASE_URL=postgres://localhost/yourdbname
когда вы запускаетесь с "стартом мастера", он будет смотреть на файл .env и создавать все эти переменные среды, точно так же, как работать с самим Heroku. Напечатайте конфигурацию "heroku", чтобы подтвердить, что у вас есть набор DATABASE_URL, который вы должны добавить, если вы добавили аддон базы данных postgres.
Просто установите переменную окружения в вашей операционной системе и проверьте, не установлен ли он или нет. Например, с системой 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 config:add MY_VAR='my_value'
Я просто попробовал это, и вот мой код:
import dj_database_url
local_db = 'postgres://django_login:[email protected]/django_db'
DATABASES = {'default': dj_database_url.config(default=local_db)}
Мое имя базы данных "django_db", имя пользователя "django_login", пароль - "123456".
Мой код может работать как на локальной машине, так и на геройку.
import dj_database_url
DATABASES = {'default': dj_database_url.config( 'Postgres:// имя_пользователя ВАШ ПАРОЛЬ @ yourhosturl: 5432/ имя_базы_данных' по умолчанию =) }
** Заменить жирный шрифт на настройки базы данных если вы используете локальную базу данных, замените yourhosturl на localhost