"应用尚未加载"和" django.core.exceptions.ImproperlyConfigured"在Django?

时间:2017-03-28 10:55:57

标签: python django django-models

enter image description here

这是我的Django项目的目录结构。当我运行python代码导入模型时:from scraping.models import LinkVendorStandard来自文件" framework_product_processing.py"它抛出了这个异常:

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

当我添加此代码时: import django django.setup()

初始化django项目设置,我得到以下异常: django.core.exceptions.AppRegistryNotReady:尚未加载应用。

我对此行为有以下2个问题:

  1. 文件:" framework_product_process.py"在django项目结构中与" views.py"处于同一水平。它可以访问模型而无需设置Django项目。如果可以从与视图相同的python路径访问此文件,那么为什么 django.core.exceptions.ImproperlyConfigured
  2. 即使在添加import django;django.setup()代码后,为什么我会收到 django.core.exceptions.AppRegistryNotReady:尚未加载应用
  3. 有人可以解释一下吗?

    更新enter image description here 文件" framework_prodcut_processing.py"我将它移动到non_app python目录时运行没有任何错误。 non_app不是Django应用程序。

1 个答案:

答案 0 :(得分:5)

<强> django.core.exceptions.ImproperlyConfigured

当您运行python manage.py runserver之类的命令时,django会使用django.setup环境变量为您自动运行DJANGO_SETTINGS_MODULE。因此views.py中的代码可以访问模型,因为django确保在导入视图之前调用django.setup。由于您将shell脚本作为简单的python文件运行,因此您必须手动调用django.setup

django.core.exceptions.AppRegistryNotReady:尚未加载应用

这通常发生在导入完整设置文件之前导入应用程序时(即在INSTALLED_APPS初始化之前)。因此,请确保您在设置文件中没有任何代码,该文件从其他应用程序导入代码。

另外,请确保您没有在应用的__init__.py个文件中导入模型或类似的应用代码。