django.core.exceptions.ImprperlyConfigured 解决方案

django.core.exceptions.ImprperlyConfigured solution

我想知道为什么会出现此错误:

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-在操作系统中定义一个环境变量([link][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的地方)

你可能会问为什么在使用迁移时等等;你没有遇到这个错误。如果我们看一下 manage.py,原因就会很清楚 因为那里有那个命令(上面列表的第三种方法)

但是你 [1]: https://docs.djangoproject.com/en/4.0/topics/settings/#designating-the-settings [2]: https://www.computerhope.com/issues/ch000549.htm