170 votes

Django DB Paramètres "Mal Configuré" Erreur

Django (1.5) est workin' fin pour moi, mais quand je lance l'interpréteur Python (Python 3) pour vérifier certaines choses, je reçois le plus étrange erreur quand j'essaie de l'importation - from django.contrib.auth.models import User -

Traceback (most recent call last):
  File "/usr/local/lib/python3.2/dist-packages/django/conf/__init__.py", line 36, in _setup
    settings_module = os.environ[ENVIRONMENT_VARIABLE]
  File "/usr/lib/python3.2/os.py", line 450, in __getitem__
    value = self._data[self.encodekey(key)]
KeyError: b'DJANGO_SETTINGS_MODULE'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.2/dist-packages/django/contrib/auth/models.py", line 8, in <module>
    from django.db import models
  File "/usr/local/lib/python3.2/dist-packages/django/db/__init__.py", line 11, in <module>
    if settings.DATABASES and DEFAULT_DB_ALIAS not in settings.DATABASES:
  File "/usr/local/lib/python3.2/dist-packages/django/conf/__init__.py", line 52, in __getattr__
    self._setup(name)
  File "/usr/local/lib/python3.2/dist-packages/django/conf/__init__.py", line 45, in _setup
    % (desc, ENVIRONMENT_VARIABLE))
django.core.exceptions.ImproperlyConfigured: Requested setting DATABASES, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

Comment pourrait-il en être mal configuré, quand il fonctionne très bien en dehors de l'interpréteur Python? Dans mon Django paramètres, les BASES de données les paramètres sont les suivants:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'django_db',                      # Or path to database file if using sqlite3.
        # The following settings are not used with sqlite3:
        'USER': 'zamphatta',
        'PASSWORD': 'mypassword91',
        'HOST': '',                 # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
        'PORT': '',                      # Set to empty string for default.
    }
}

...comment est-ce mal configuré?

266voto

Pavel Anossov Points 23610

Vous ne pouvez pas simplement le feu jusqu'à python et vérifier les choses, django ne sais pas quel projet que vous souhaitez travailler. Vous devez effectuer l'une de ces choses:

  • Utiliser python manage.py shell
  • Utiliser django-admin.py shell --settings=mysite.settings (ou quelque soit la configuration du module que vous utilisez)
  • Ensemble DJANGO_SETTINGS_MODULE variable d'environnement dans votre système d'exploitation à l' mysite.settings
  • (C'est supprimée dans django 1.6) Utiliser setup_environ dans l'interpréteur python:

    from django.core.management import setup_environ
    from mysite import settings
    
    setup_environ(settings)
    

Naturellement, la première méthode est la plus simple.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X