我想知道为什么我会收到这个错误:
django.core.exceptions.ImproperlyConfigured:请求设置 INSTALLED_APPS,但未配置设置。您必须在访问设置之前定义环境变量 DJANGO_SETTINGS_MODULE 或调用 settings.configure()。
这是我的代码:
from main_app.models import student
std1 = student(name='tom', fullname='scholz')
std1.save()
print(student.objects.all())
运行服务器和迁移没有任何问题。但是当涉及到运行 .py 文件(由我自己制作)时,就会出现这样的错误。
这个问题只是因为Django 不知道去哪里找需要的设置。 因为它是 [Documentation][1] 提到的:
When you use Django, you have to tell it which settings you’re using. Do this
by using an environment variable, DJANGO_SETTINGS_MODULE.
根据文档,您应该通过定义环境变量来做到这一点(通知 Django 有关设置)。
据我所知,面对这个错误应该做什么,这里提供了您可以采取的不同解决方案列表:
1- 在操作系统中定义一个环境变量([链接][2])。
2- 如果您使用的是虚拟环境;在 activate.bat 中设置一个新的环境变量
set "DJANGO_SETTINGS_MODULE=<your_proj_name>.settings"
这样,每当您激活虚拟环境时,该变量就会自动定义。
3-(就像你做的那样!)在每个 python 文件中;编写定义该环境变量的命令。
os.environ.setdefault('DJANGO_SETTINGS_MODULE', '<your_proj_name>.settings')
但是如果你使用第三种方法,那么你把命令放在哪里真的很重要(在第二种情况下,当然是第一种情况,我们根本不关心!)。 所以你应该注意不要在脚本中的该命令之前使用 Django。 (有些人想知道为什么使用这个命令后还是报同样的错误,原因是他们把那行代码放到了之前用过Django的地方)
你可能会问为什么用migration等等;你没有遇到这个错误。如果我们看一下 manage.py,原因就会很清楚 因为那里有那个命令(上面列表的第三种方法)
但是你 [1]:https://docs.djangoproject.com/en/4.0/topics/settings/#designating-the-settings [2]:https://www.computerhope.com/issues/ch000549.htm
对我来说,当我试图在我的项目中使用 Pytest 时提出的问题。我在 pytest.ini 中定义了“DJANGO_SETTINGS_MODULE”,问题仍然存在。所以我卸载了 pytest-django 并重新安装它,它工作了。你也可以试试。它可能会工作。
卸载步骤:-
pip uninstall pytest-django
重新安装的步骤:-
pip install pytest-django
希望它能解决您的问题。当您的代码没有任何错误时,这令人沮丧,但由于某些技术原因您仍然会出错,甚至很难找到。
当你使用Django时,你可以使用Django application shell将所有相关变量导入到项目中。
在终端中:
python manage.py shell
您必须在
manage.py
文件所在的目录中。希望这会有所帮助。