django3.0报错django.core.exceptions.ImproperlyConfigured

django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

环境:python 3.6 django3.0

项目名:BookRecommend
app名:data
aaa.py 是data下新建的一个python文件

寒假期间我自学了django用的最新版本,然而在我新建的一个python文件中导入models时它报了这样一个错误
django3.0报错django.core.exceptions.ImproperlyConfigured_第1张图片
我通过上网搜索,发现只有django2.0的解决方法,没有找到django3.0的,
我试过没有效果的方法就不再说了。(有的可能是不够详细,所以没有解决)
我按照网上的方法加上了这些代码
import os
import django
os.environ.setdefault(“DJANGO_SETTINGS_MODULE”, “BookRecommend.settings”)
django.setup()
由于加的位置不对,再次报错(网上的解决办法没有详细说明)
django3.0报错django.core.exceptions.ImproperlyConfigured_第2张图片
于是无奈之下只好翻官方文档,最终发现问题所在
django3.0报错django.core.exceptions.ImproperlyConfigured_第3张图片
django3.0报错django.core.exceptions.ImproperlyConfigured_第4张图片
文档中强调:
第一个django导入 INSTALLED_APPS .

如果是应用程序配置类,Django将导入应用程序的根包,该根包由 name 属性。如果它是一个python包,Django会创建一个默认的应用程序配置。

在这个阶段,您的代码不应该导入任何模型!

换句话说,应用程序的根包和定义应用程序配置类的模块不应该导入任何模型,甚至是间接导入。

严格来说,Django允许在加载应用程序配置后导入模型。但是,为了避免不必要的限制 INSTALLED_APPS ,强烈建议在此阶段不要导入任何模型。

完成此阶段后,在应用程序配置(如 get_app_config() 变得有用。
于是我将代码换了位置:
django3.0报错django.core.exceptions.ImproperlyConfigured_第5张图片
问题得到了解决。
在此提醒:
BookRecommend是我的项目名,更改时需要改成自己的项目名
然后再说一下自己血的教训:
有人给我说可能是我的app名字,即data这个名字与关键字重了,让我改名字试试
虽然我没有在网上找到data重名的这个可能性,但我还是试了一下,直接使用重命名失败,但我发现项目中涉及到的名字已经改变,而且python、django自带的某些文件中也出现了,不知道有没有被更改,好在项目运行暂时没有出问题。
所以一定一定不要病急乱投医,轻易使用app重命名,因为可能自带的文件中涉及到了app的名字,后果很严重!!!
再者,我改过数据库的表的字符长度,也改了迁移文件,还改了模型类,朋友帮我解决问题时,说可能有影响,重新迁移一次,最终我删了数据库(原因是有些表删不了。。。),重新迁移了一次,重新导入了数据。。。。。。
虽然不知道会不会有影响,建议,不要更改迁移文件,数据库表的结构,还有模型类

本文涉及到的官方文档django3.0连接:
https://www.osgeo.cn/django/ref/applications.html#app-loading-process.

你可能感兴趣的:(django3.0报错django.core.exceptions.ImproperlyConfigured)