Injection des paramètres de la base de données Heroku-comment configurer ma base de données dev django?

j'essaie de faire fonctionner mon application dev django locale après avoir suivi ces instructions sur l'ajout des paramètres de la base de données env.

https://devcenter.heroku.com/articles/django-injection

j'ai suivi les instructions mais j'obtiens l'erreur suivante quand mon application essaye d'accéder à la base de données locale

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.

Mes paramètres de base de données à l'origine,

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',
    }
}

l'article d'heroku dit d'ajouter ce qui suit aux paramètres le fichier

import dj_database_url
DATABASES = {'default': dj_database_url.config(default='postgres://localhost')}

comment puis-je obtenir dj_database_url.config pour utiliser mes paramètres my dev lorsque la DATABASE_URL n'est pas disponible dans dev?

30
demandé sur heifetz 2012-06-17 17:20:25

5 réponses

Vous pouvez simplement ajouter votre dev paramètres aux valeurs par défaut comme ceci...

import dj_database_url
DATABASES = {'default': dj_database_url.config(default='postgres://foo:bar@localhost:5432/db')}
38
répondu kyen99 2012-06-19 11:40:25

utilisez ceci dans votre settings.py:

DATABASES = {'default': dj_database_url.config(default=os.environ['DATABASE_URL'])}

et dans votre .le fichier env a ceci:

DATABASE_URL=postgres://localhost/yourdbname

quand vous lancez avec "foreman start" il regardera le .env fichier et créer toutes ces variables d'environnement, tout comme l'exécution sur Heroku lui-même. Tapez "heroku config" pour confirmer que vous avez un ensemble DATABASE_URL, ce que vous devriez faire si vous avez ajouté l'addon de la base de données postgres.

13
répondu user712225 2012-09-12 15:50:33

il suffit de définir une variable d'environnement sur votre système d'exploitation et de vérifier si elle est définie ou non. Par exemple, avec un système 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

Aussi, si vous avez besoin d' définir une variable d'environnement sur votre espace heroku:

heroku config:add MY_VAR='my_value'
8
répondu Loïs Di Qual 2012-08-06 12:31:14

j'ai juste essayé et voici mon code:

import dj_database_url

local_db = 'postgres://django_login:123456@localhost/django_db'
DATABASES = {'default': dj_database_url.config(default=local_db)}

Mon nom de base de données est "django_db", le nom d'utilisateur est "django_login", le mot de passe "123456".

mon code peut fonctionner à la fois dans la machine locale et heroku.

5
répondu ming.kernel 2016-02-03 00:31:57

importer dj_database_url

bases de données = {'default': dj_database_url.config(par défaut='postgres://votre nom d'utilisateur:votre mot de passe@yourhosturl:5432/ yourdbname')}

* * remplacer chaîne de caractères gras par les paramètres de votre base de données si vous utilisez une base de données locale, remplacez yourhosturl par localhost

1
répondu Naveen Agarwal 2016-08-29 07:51:33