Epiphany131 2023-03-28 21:31 采纳率: 78.9%
浏览 23

django 无法导入数据库中的表

django无法导入数据库中的表
原来的代码是:

from .models import Author

debug错误提示:
ImportError: attempted relative import with no known parent package

当我把位置改为绝对路径时(from author.models import Author)
显示我环境变量配置有问题: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.

修改环境变量后反而其他配置出问题,所以又改回来了。
重新建了一个项目,导入了所有文件,仍然是同样的错误。

已确认app在settings中注册:

img

请问是哪里有问题?

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-03-29 06:58
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/952670
    • 你也可以参考下这篇文章:解决django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings...问题
    • 除此之外, 这篇博客: 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时它报了这样一个错误

      我通过上网搜索,发现只有django2.0的解决方法,没有找到django3.0的,
      我试过没有效果的方法就不再说了。(有的可能是不够详细,所以没有解决)
      我按照网上的方法加上了这些代码
      import os
      import django
      os.environ.setdefault(“DJANGO_SETTINGS_MODULE”, “BookRecommend.settings”)
      django.setup()
      由于加的位置不对,再次报错(网上的解决办法没有详细说明)
      在这里插入图片描述
      于是无奈之下只好翻官方文档,最终发现问题所在
      在这里插入图片描述
      在这里插入图片描述
      文档中强调:
      第一个django导入 INSTALLED_APPS .

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

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

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

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

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

      本文涉及到的官方文档django3.0连接:

      https://www.osgeo.cn/django/ref/applications.html#app-loading-process.

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 3月28日