当前位置: 首页 > 面试题库 >

尝试将数据加载到模型中时出现“ django.core.exceptions.AppRegistryNotReady:应用尚未加载”

符修杰
2023-03-14
问题内容

我正在用Django开发应用程序。

我想将数据加载到模型中,即glossary_entry,但数据存储在xlsx文件中,即dati_prova.xlsx

为了实现这一目标,我开发了以下脚本:

import pandas as pd
from django.conf import settings

settings.configure()

from myapp.models import glossary_entry #this is line 7

path=r"mypath\dati_prova.xlsx"

with open(path) as f:
        reader = pd.read_excel(f)
        next(reader, None)  # skip the headers

        for row in reader:
                _, created = glossary_entry.objects.get_or_create(
                Lemma = row[0],
                Acronym = row[1],
                Definizione = row[2],
                )
            # creates a tuple of the new object or
            # current object and a boolean of if it was created

但是当我从Anaconda提示符下运行它时,我得到了

文件“ load_glossary.py”,模块7中的第7行,

引发AppRegistryNotReady(“应用尚未加载。”)django.core.exceptions.AppRegistryNotReady:应用尚未加载。

有什么问题?

请注意:

我的应用运行正常,只是上传数据脚本失败。

请注意:

我复制粘贴

from django.conf import settings

settings.configure()

从堆栈溢出的答案,因为我收到错误:

django.core.exceptions.ImproperlyConfigured:请求的设置USE_TZ,但未配置设置。您必须在访问设置之前定义环境变量DJANGO_SETTINGS_MODULE或调用settings.configure()。

但我没有经验,也不知道是什么错误。

------------------更新----------------------

我已经在https://groups.google.com/forum/#!topic/django-
users/bF_lRbzzguA
上阅读到

问题在于您的应用程序之一在其顶层 init .py中导入了模型。不支持 有关说明,您可以阅读
https://docs.djangoproject.com/en/1.9/ref/applications/#how-applications-
are-loaded

------------------更新----------------------

我将文件更改如下:

import pandas as pd

from django.conf import settings
settings.configure()

import django
django.setup()


from myapp.models import mymodel

path=r"mypath\dati_prova.xlsx"

with open(path) as f:
        reader = pd.read_excel(f)
        next(reader, None)  # skip the headers

现在我得到:

RuntimeError:模型类myapp.models.mymodel未声明显式的app_label,并且不在INSTALLED_APPS中的应用程序中。

但这不是真的,因为在settings.py中我写了我的应用程序名称,项目运行正常。只是脚本不起作用…就像python无法读取我的settings.py一样。有什么问题?也许正在读另一集

------------------更新----------------------

如这里的建议https://stackoverflow.com/a/38821174/7658051
我已将脚本load_glossary.py移入

myapp>管理>命令

将我的xlsx文件复制到一个csv文件中,
并更新了代码,如下所示:

# myapp/management/commands/load_glossary.py

from django.core.management.base import BaseCommand, CommandError
import csv

class Command(BaseCommand):

    def add_arguments(self, parser):
        parser.add_argument('csv_file', nargs='+', type=str)

    def handle(self, *args, **options):
        for csv_file in options['csv_file']:
            dataReader = csv.reader(open(csv_file), delimiter=',', quotechar='"')
            for row in dataReader:

                Lemma=row[0],
                Acronym=row[1],
                Definition=row[2],


                # etc...
                self.stdout.write(
                    'Created glossary entry'

                )

然后我在anaconda提示符下输入午餐时间

python ./manage.py load_glossary csv_file "mypath\dati_prova.csv"

但后来我明白了

第20行,在句柄dataReader = csv.reader(open(csv_file),delimiter =’,’,quotechar
=’“’))FileNotFoundError:[Errno 2]没有这样的文件或目录:’csv_file’

这次怎么了


问题答案:

我用下面的代码替换了在第一个问题中显示的第一个代码块,从而解决了这个问题:

import pandas as pd
from myapp.models import glossary_entry

def pour_entire_entry_model():

    elements = glossary_entry.objects.all()

    for element in elements:

        entry = acquired_terminology.objects.create()

        entry.Lemma = element.Lemma
        entry.Acronym = element.Acronym
        entry.Definizione = element.Definizione

            # creates a tuple of the new object or
            # current object and a boolean of if it was created


 类似资料:
  • 问题内容: 这是Windows系统上的追溯。 我的manage.py看起来像这样: 当我尝试在Django 1.7中使用注册应用程序时出现此错误 问题答案: 这就是为我们和这些人解决的问题: 我们的项目从Django 1.4开始,然后转到1.5,然后到1.7。我们的wsgi.py看起来像这样: 当我更新到1.7样式的WSGI处理程序时: 现在一切正常。

  • 我正在做一个ML/Tensorflow hello world,通过使用MNIST数据集来预测某物是什么类型的衣服,但是当我尝试使用数据将数据加载到我的doe中时。load_data()它给了我以下错误: 使用TensorFlow后端。从下载数据https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-labels-idx1

  • 一段时间以来,我一直在使用Maven和Vaadin 6开发Java应用程序。 我现在需要添加一个附加组件(Vaadin calendar 1.3.0-适用于Vaadin 6)。 我已经在我的pom.xml文件中添加了maven依赖和存储库,正如所附链接上建议的那样,Maven确实下载了我的依赖jar文件,它位于WEB-INF/lib目录中。 但是,当我尝试加载加载页时,我得到以下错误消息(在浏览器

  • 问题内容: 我正在使用我使用android studio Tabbed Activity 创建的应用程序上工作,我选择了此活动,以便在用户滑动时从json url加载一些数据,并且我创建了另一个类,该类可以在方法上获取JSON数据,并且所有这些都可以正常工作,除非在应用程序时从调用方法的主要活动开始,并且当我调用布局时未填充任何数据时 ,我想要的是加载应用程序MainActivity时要显示的数据

  • 我正在尝试在单个链表的末尾插入一个新节点。但是我在编译后不断得到空点例外。 下面是节点类。 这里是单个LL类 addFirst()方法有效。当我试图通过addLast()创建一个LL时,出现了NullPointerException。我想< code > if(size = = 0){ head = new node;一定有什么问题;},但是我想不通。

  • 问题内容: 我正在使用以下代码填充数据库: 跑步时 它给出了错误: 我的其余文件都可以,但是出现此错误。我正在遵循 Tango的Django 教程,但由于该书涉及Django 1.5.4,并且我使用的是Django 1.8,所以有人可以在这里帮助我吗? 问题答案: 我在Django 1.7rc2中有同样的例外。解决方案是在程序的开头添加以下行: 更新:现在已针对Django 1.8进行了记录。