crear - Inyección de configuración de base de datos de Heroku: ¿cómo configuro mi base de datos dev django?
heroku panel (5)
importar dj_database_url
BASES DE DATOS = {''default'': dj_database_url.config (default = ''postgres: // sunombre de usuario : sucontraseña @ suurlurl : 5432 / sunombredb '')}
** Reemplazar la cadena en negrita con la configuración de su base de datos si está utilizando una base de datos local y luego reemplazar su hosthost por localhost
Intento que mi aplicación dev django local funcione después de seguir estas instrucciones sobre cómo agregar la configuración de la base de datos env.
https://devcenter.heroku.com/articles/django-injection
Seguí las instrucciones pero recibo el siguiente error cuando mi aplicación intenta acceder a la base de datos local
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.
La configuración de mi base de datos originalmente
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'',
}
}
el artículo heroku dice agregar lo siguiente al archivo de configuración
import dj_database_url
DATABASES = {''default'': dj_database_url.config(default=''postgres://localhost'')}
¿Cómo obtengo dj_database_url.config para usar mi configuración de mis dev cuando DATABASE_URL no está disponible en dev?
Acabo de probar esto y aquí está mi código:
import dj_database_url
local_db = ''postgres://django_login:123456@localhost/django_db''
DATABASES = {''default'': dj_database_url.config(default=local_db)}
El nombre de mi base de datos es "django_db", el nombre de usuario es "django_login", la contraseña es "123456".
Mi código puede ejecutarse tanto en la máquina local como en heroku.
Simplemente configure una variable de entorno en su sistema operativo y compruebe si está configurado o no. Por ejemplo, con un sistema 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
Además, si necesita establecer una variable de entorno en su espacio heroku:
heroku config:add MY_VAR=''my_value''
Simplemente puede agregar su configuración de desarrollo a los valores predeterminados como este ...
import dj_database_url
DATABASES = {''default'': dj_database_url.config(default=''postgres://foo:bar@localhost:5432/db'')}
Use esto en su settings.py:
DATABASES = {''default'': dj_database_url.config(default=os.environ[''DATABASE_URL''])}
y en su archivo .env tenga esto:
DATABASE_URL=postgres://localhost/yourdbname
cuando inicies con "foreman start" mirará el archivo .env y creará todas esas variables de entorno, como si se ejecutara en Heroku. Escriba "heroku config" para confirmar que tiene un conjunto DATABASE_URL, que debe si agregó el complemento de base de datos postgres.