python - شرح - django wiki




خطأ "تهيئة بشكل غير صحيح" لـ Django DB Settings (4)

على Django 1.9 ، حاولت django-admin servererver وحصلت على نفس الخطأ ، ولكن عندما استخدمت "python manage.py server" حصلت على النتيجة المنشودة. هذا قد يحل هذا الخطأ لكثير من الناس!

Django (1.5) هو عمل جيد بالنسبة لي ، ولكن عندما أطلق مترجم Python (Python 3) للتحقق من بعض الأشياء ، أحصل على أغرب خطأ عندما أحاول الاستيراد - 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.

كيف يمكن تكوينه بشكل غير صحيح ، عندما يعمل بشكل جيد خارج مترجم Python؟ في إعداداتي في Django ، تكون إعدادات DATABASES هي:

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.
    }
}

... كيف يتم تكوين هذا بشكل غير صحيح؟


في حالتي ، حصلت على هذا عند محاولة إجراء اختبارات دجانغو من خلال PyCharm. أعتقد أن السبب هو أن PyCharm لا يقوم بتحميل إعدادات مشروع Django الأولية ، أي تلك التي تدير manage.py shell البداية. يمكن للمرء أن manage.py test إلى بداية البرنامج النصي للاختبار أو مجرد تشغيل الاختبارات باستخدام برنامج manage.py test

إصدارات:

  • Python 3.5 (في virtualenv)
  • PyCharm 2016.3.2 Professional
  • دجانجو 1.10

في عام 2017 مع django 1.11.5 وثعبان الثعبان 3.6:

import django
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
django.setup()

يجب أن يكون .py الذي وضعت فيه هذا الكود في mysite (العنصر الأصل)


في وعاء الثعبان / ipython الخاص بك:

from django.conf import settings

settings.configure()






django