Django DB 设置“配置不当"错误 [英] Django DB Settings 'Improperly Configured' Error
问题描述
Django (1.5) 对我来说很好用,但是当我启动 Python 解释器 (Python 3) 来检查某些事情时,我在尝试导入时遇到了最奇怪的错误 - from django.contrib.auth.models 导入用户
-
Django (1.5) is workin' fine for me, but when I fire up the Python interpreter (Python 3) to check some things, I get the weirdest error when I try importing - 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
设置是:
How could it be improperly configured, when it works fine outside the Python interpreter? In my Django settings, the DATABASES
settings are:
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.
}
}
...这是如何配置不当的?
...how is this improperly configured?
推荐答案
你不能只是启动 Python 并检查事情,Django 不知道你想从事什么项目.您必须执行以下操作之一:
You can't just fire up Python and check things, Django doesn't know what project you want to work on. You have to do one of these things:
- 使用
python manage.py shell
- 使用
django-admin.py shell --settings=mysite.settings
(或您使用的任何设置模块) - 将操作系统中的
DJANGO_SETTINGS_MODULE
环境变量设置为mysite.settings
(这在 Django 1.6 中被移除)在 python 解释器中使用
setup_environ
:
- Use
python manage.py shell
- Use
django-admin.py shell --settings=mysite.settings
(or whatever settings module you use) - Set
DJANGO_SETTINGS_MODULE
environment variable in your OS tomysite.settings
(This is removed in Django 1.6) Use
setup_environ
in the python interpreter:
from django.core.management import setup_environ
from mysite import settings
setup_environ(settings)
当然,第一种方法是最简单的.
Naturally, the first way is the easiest.
这篇关于Django DB 设置“配置不当"错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!