Python Django DB设置';配置不当';错误

Python Django DB设置';配置不当';错误,python,django,Python,Django,Django(1.5)对我来说工作正常,但当我启动Python解释器(Python 3)检查某些内容时,我在尝试从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_m

Django(1.5)对我来说工作正常,但当我启动Python解释器(Python 3)检查某些内容时,我在尝试从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不知道您要处理什么项目。您必须执行以下操作之一:

  • 使用
    python manage.py shell
  • 使用django-admin.py shell--settings=mysite.settings
(或您使用的任何设置模块)
  • 将操作系统中的环境变量设置为mysite.SETTINGS
  • (这在Django 1.6中被删除)在python解释器中使用
    setup\u environ

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

  • 当然,第一种方法是最简单的。

    在pythonshell/ipython中:

    from django.conf import settings
    
    settings.configure()
    

    在我自己的例子中,在python2.7.11上运行的django 1.10.1中,我尝试使用
    django admin runserver
    来启动服务器,而不是在我的项目目录中使用
    manage.py runserver

    在django 1.9上,我尝试了
    django admin runserver
    并得到了相同的错误,但是当我使用
    python manage.py runserver
    时,我得到了预期的结果。这可能会解决很多人的错误

    在我的例子中,我是在尝试通过PyCharm运行Django测试时得到这个消息的。我认为这是因为PyCharm没有加载初始Django项目设置,即那些最初运行的
    manage.py shell
    。可以将它们添加到测试脚本的开头,也可以使用
    manage.py test
    运行测试

    版本:

    • Python 3.5(在virtualenv中)
    • PyCharm 2016.3.2专业版
    • Django 1.10

    • 2017年,django 1.11.5和python 3.6(从评论中可以看出,这也适用于python 2.7):


      对于使用IntelliJ的用户,放置此代码的
      .py
      应该位于
      mysite
      (父站点)

      ,通过这些设置,我可以从shell(在windows上)进行查询


      谢谢!我在文档中对此不太清楚,或者可能是我读了之后忘记了。奇怪的是,它似乎找不到“mysite.settings”文件,但我可以看到它作为mysite/settings.py放在那里。啊!我开始讨厌Django了。是的,
      setup\u environ
      在1.6中被删除了,但是
      ——settings
      应该可以工作。你确定你的设置在进一步的
      FirstBlog.settings
      ,而不仅仅是在当前目录下的
      settings
      中吗?以上这些都不适用于我,但这一个确实适用:
      $export DJANGO\u settings\u MODULE=“my\u project.settings”
      在PyCharm中执行此操作的地方是运行|编辑配置|(例如,项目中的单元测试)|配置|环境|环境变量:
      DJANGO_SETTINGS_MODULE=(项目目录名)。设置
      在设置新项目时遇到此问题。我发现取消设置DJANGO\u设置\u模块有帮助。我遇到了一个问题,我在django 1.10上的.bashrccame中设置了env var,但是在尝试运行命令loaddata
      时,应用程序还没有加载。
      非常感谢,在我使用python 2.7 Tothis
      的案例工作中,没有其他解决方案有效。py
      应该放在根目录下,这意味着它与manage.py一起使用。如何将其放置在随机文件夹中?需要注意的是,只有将其放在文件的顶部,如果将其放在类似
      的内容中,如果_uname__==“_umain__;”:
      它将无法正常工作:)
      from django.conf import settings
      
      settings.configure()
      
      import django
      import os
      os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
      django.setup()