GVKun编程网logo

Django 1.7抛出django.core.exceptions.AppRegistryNotReady:模型尚未加载

28

本文将分享Django1.7抛出django.core.exceptions.AppRegistryNotReady:模型尚未加载的详细内容,此外,我们还将为大家带来关于1.Django中错误:dja

本文将分享Django 1.7抛出django.core.exceptions.AppRegistryNotReady:模型尚未加载的详细内容,此外,我们还将为大家带来关于1.Django中错误:django.core.exceptions.ImproperlyConfigured、2019.5.1 Django报错django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is req...、celery开启worker报错django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, bu...、cxf 之 Caused by: java.lang.RuntimeException: Soap 1.1 endpoint already registered on address /rest的相关知识,希望对你有所帮助。

本文目录一览:

Django 1.7抛出django.core.exceptions.AppRegistryNotReady:模型尚未加载

Django 1.7抛出django.core.exceptions.AppRegistryNotReady:模型尚未加载

这是Windows系统上的追溯。

Traceback (most recent call last):  File "D:\AMD\workspace\steelrumors\manage.py", line 9, in <module>    django.setup()  File "D:\AMD\Django\django-django-4c85a0d\django\__init__.py", line 21, in setup    apps.populate(settings.INSTALLED_APPS)  File "D:\AMD\Django\django-django-4c85a0d\django\apps\registry.py", line 108, in populate    app_config.import_models(all_models)  File "D:\AMD\Django\django-django-4c85a0d\django\apps\config.py", line 197, in import_models    self.models_module = import_module(models_module_name)  File "C:\Python27\lib\importlib\__init__.py", line 37, in import_module    __import__(name)  File "C:\Python27\lib\site-packages\registration\models.py", line 15, in <module>    User = get_user_model()  File "D:\AMD\Django\django-django-4c85a0d\django\contrib\auth\__init__.py", line 135, in get_user_model    return django_apps.get_model(settings.AUTH_USER_MODEL)  File "D:\AMD\Django\django-django-4c85a0d\django\apps\registry.py", line 199, in get_model    self.check_models_ready()  File "D:\AMD\Django\django-django-4c85a0d\django\apps\registry.py", line 131, in check_models_ready    raise AppRegistryNotReady("Models aren''t loaded yet.")django.core.exceptions.AppRegistryNotReady: Models aren''t loaded yet.

我的manage.py看起来像这样:

import osimport sysimport djangoif __name__ == "__main__":    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "steelrumors.settings")    django.setup()    from django.core.management import execute_from_command_line    execute_from_command_line(sys.argv)

当我尝试在Django 1.7中使用注册应用程序时出现此错误

答案1

小编典典

这就是为我们和这些人解决的问题:

我们的项目从Django 1.4开始,然后转到1.5,然后到1.7。我们的wsgi.py看起来像这样:

import osfrom django.core.handlers.wsgi import WSGIHandleros.environ[''DJANGO_SETTINGS_MODULE''] = ''myapp.settings''application = WSGIHandler()

当我更新到1.7样式的WSGI处理程序时:

import osfrom django.core.wsgi import get_wsgi_applicationos.environ[''DJANGO_SETTINGS_MODULE''] = ''myapp.settings''application = get_wsgi_application()

现在一切正常。

答案2

小编典典

问题出在你的注册应用中。django-registration似乎get_user_module()models.py在模块级别调用的(当应用程序注册过程仍在加载模型时)。这将不再起作用:

try:    from django.contrib.auth import get_user_model    User = get_user_model()except ImportError:    from django.contrib.auth.models import User   

我将更改此模型文件以仅get_user_model()在方法内部调用(而不是在模块级别),并且在FK中使用类似以下内容的方法:

user = ForeignKey(settings.AUTH_USER_MODEL)

顺便说一句,django.setup()你的manage.py文件中不需要调用,而是在中为你调用execute_from_command_line

答案3

小编典典

运行以下命令解决了我的问题:

import djangodjango.setup()

但是我不确定为什么需要这个。评论将不胜感激。

1.Django中错误:django.core.exceptions.ImproperlyConfigured

1.Django中错误:django.core.exceptions.ImproperlyConfigured

1.Django中错误:django.core.exceptions.ImproperlyConfigured: *DEFAULT_INDEX_TABLESPACE解决方案
【参考】Django中错误:django.core.exceptions.ImproperlyConfigured
原因:

python启动方式python,会启动交互解释器,需要告诉Django使用哪个设置文件,Django会搜索DJANGO_SETTINGS_MODULE环境变量,它被设置在settings.py中,

需要设置为:multiDatabase.settings
【解决】解决方法:打开cmd,输入python manage.py shell(前提是下载了ipython或者bpython等)
来启动命令解释器而不是python,因为python manage.py shell中包含了Django使用哪个settings.py文件以
2.No module named widgets and DjangoUeditor等问题,都可以通过上述解决方案解决
因为python3不支持
待补充.....
【结果】当我用python manage.py shell启动python解释器后,再打开一个cmd,启动开发服务器python manage.py runserver,然后打开http://127.0.0.1:8000/admin
进入界面后,点击教程,然后点击文章,可以对文章进行编辑,然后可以看到引入DjangoUeditor会出现一个文本编辑界面,包括表情等等这就是这个集成东西的用处

clipboard.png

2019.5.1 Django报错django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is req...

2019.5.1 Django报错django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is req...

Django版本:2.2   python版本:3.7  pymysql:0.9.3

创建数据库的时候报错:

django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

 

解决方案:我是在虚拟环境中工作的,需要在路径

/venv/lib/site-packages/django/db/backends/mysql/base.py里面注释掉以下内容:

 

接着仍会报错,报错信息如下:

 

找到operations.py文件(146行)
原来是decode的方法,将它改为encode。解决方法如下:

接下来就可以成功的执行迁移啦。

 

celery开启worker报错django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, bu...

celery开启worker报错django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, bu...

其实挺简单的问题,但花了自己一个下午来解决,先是浏览各种博客,无果;没办法,然后去看celery官方文档,无果,近乎绝望,最后仔细看代码,找到问题所在(如下),自学狗这效率。。。。。。

下面是自己task.py中的代码

# 使用celery
from django.conf import settings
from celery import Celery
from django.template import loader, RequestContext
from goods.models import GoodsType, IndexGoodsBanner, IndexPromotionBanner, IndexTypeGoodsBanner
import os


# 在任务处理者一端加这几句
import os
import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "dailyfresh.settings")
django.setup()

# 创建一个Celery类的实例对象
app = Celery(''celery_tasks.tasks'', broker=''redis://127.0.0.1:6379/1'')

# 定义任务函数
@app.task
def generate_static_index_html():
    """产生首页静态页面"""
    # 获取商品的种类信息
    types = GoodsType.objects.all()

    # 获取首页轮播商品信息
    goods_banners = IndexGoodsBanner.objects.all().order_by(''index'')

    # 获取首页促销活动信息
    promotion_banners = IndexPromotionBanner.objects.all().order_by(''index'')

    # 获取首页分类商品展示信息
    for type in types:  # GoodsType
        # 获取type种类首页分类商品的图片展示信息
        image_banners = IndexTypeGoodsBanner.objects.filter(type=type, display_type=1).order_by(''index'')
        # 获取type种类首页分类商品的文字展示信息
        title_banners = IndexTypeGoodsBanner.objects.filter(type=type, display_type=0).order_by(''index'')

        # 动态给type增加属性,分别保存首页分类商品的图片展示信息和文字展示信息
        type.image_banners = image_banners
        type.title_banners = title_banners

    # 组织模板上下文
    context = {''types'': types,
               ''goods_banners'': goods_banners,
               ''promotion_banners'': promotion_banners}

    # 使用模板
    # 1.加载模板文件,返回模板对象
    temp = loader.get_template(''static_index.html'')
    # 2.模板渲染
    static_index_html = temp.render(context)

    # 生成首页对应静态文件
    save_path = os.path.join(settings.BASE_DIR, ''static/index.html'')
    with open(save_path, ''w'') as f:
        f.write(static_index_html)

当使用celery -A celery_tasks.tasks worker -l info开启worker时,出现标题所示的报错,

错误原因:

from goods.models import GoodsType, IndexGoodsBanner, IndexPromotionBanner, IndexTypeGoodsBanner

这行代码应该写在环境配置后面,不然python解释器找不到goods模块,具体代码如下

# 使用celery
from django.conf import settings
from celery import Celery
from django.template import loader, RequestContext

# 在任务处理者一端加这几句
import os
import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "dailyfresh.settings")
django.setup()

from goods.models import GoodsType, IndexGoodsBanner, IndexPromotionBanner, IndexTypeGoodsBanner

# 创建一个Celery类的实例对象
app = Celery(''celery_tasks.tasks'', broker=''redis://127.0.0.1:6379/1'')

# 定义任务函数
@app.task
def generate_static_index_html():
    """产生首页静态页面"""
    # 获取商品的种类信息
    types = GoodsType.objects.all()

    # 获取首页轮播商品信息
    goods_banners = IndexGoodsBanner.objects.all().order_by(''index'')

    # 获取首页促销活动信息
    promotion_banners = IndexPromotionBanner.objects.all().order_by(''index'')

    # 获取首页分类商品展示信息
    for type in types:  # GoodsType
        # 获取type种类首页分类商品的图片展示信息
        image_banners = IndexTypeGoodsBanner.objects.filter(type=type, display_type=1).order_by(''index'')
        # 获取type种类首页分类商品的文字展示信息
        title_banners = IndexTypeGoodsBanner.objects.filter(type=type, display_type=0).order_by(''index'')

        # 动态给type增加属性,分别保存首页分类商品的图片展示信息和文字展示信息
        type.image_banners = image_banners
        type.title_banners = title_banners

    # 组织模板上下文
    context = {''types'': types,
               ''goods_banners'': goods_banners,
               ''promotion_banners'': promotion_banners}

    # 使用模板
    # 1.加载模板文件,返回模板对象
    temp = loader.get_template(''static_index.html'')
    # 2.模板渲染
    static_index_html = temp.render(context)

    # 生成首页对应静态文件
    save_path = os.path.join(settings.BASE_DIR, ''static/index.html'')
    with open(save_path, ''w'') as f:
        f.write(static_index_html)

 此时使用celery -A celery_tasks.tasks worker -l info 就能正常开启worker了

cxf 之 Caused by: java.lang.RuntimeException: Soap 1.1 endpoint already registered on address /rest

cxf 之 Caused by: java.lang.RuntimeException: Soap 1.1 endpoint already registered on address /rest

发布 rest 服务

但是 spring-cxf-rest.xml 中配置的却是

<jaxws:server address="/weather"....................................

应当是

<jaxrs:server address="/weather".....................................

=========================== 羞耻的分割线 (真正元凶)=============================

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
  <display-name>Archetype Created Web Application</display-name>
  <!--Spring配置-->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:spring.xml</param-value>
  </context-param>
  <listener>
    <listener-class>
      org.springframework.web.context.ContextLoaderListener
    </listener-class>
  </listener>
  <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <servlet>
    <servlet-name>SpringMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    <async-supported>true</async-supported>
  </servlet>
  <servlet-mapping>
    <servlet-name>SpringMVC</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>

  <!-- CXF框架的配置 -->
  <servlet>
    <servlet-name>cxf</servlet-name>
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>cxf</servlet-name>
    <url-pattern>/ws/*</url-pattern>
  </servlet-mapping>

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

  spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:jdbc.properties</value>
            </list>
        </property>
    </bean>
    <!--<import resource="classpath*:spring-mvc.xml" />-->
    <import resource="classpath*:spring-mybatis.xml" />
    <import resource="classpath*:spring-cxf-rest.xml" />

</beans>

  以上字体红色加粗加大部分是更正后的配置~(编辑器原因显示不出来,不过,上面的 web.xml 和 spring.xml 是正确的配置).

更正前:

web.xml 中 SpringMVC 的配置:<param-value>classpath:spring.xml</param-value>

Spring.xml 中引入 spring-mvc.xml 的配置:<import resource="classpath*:spring-mvc.xml" />

也并未注释,这是配置 springmvc 时相当于加载了 spring 的配置文件一次 (拆分 Spring 配置文件时不明确 web.xml 配置导致)

而 web.xml 上部引入 spring.xml 及配置监听器也已经引入了一次,相当于二次加载 spring.xml, 这样一来必然会报如题错误.

 

总结:

  磨刀不误砍柴工,基础性的东西不吃透必然多走弯路,而且是重复性的弯路.

 

关于Django 1.7抛出django.core.exceptions.AppRegistryNotReady:模型尚未加载的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于1.Django中错误:django.core.exceptions.ImproperlyConfigured、2019.5.1 Django报错django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is req...、celery开启worker报错django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, bu...、cxf 之 Caused by: java.lang.RuntimeException: Soap 1.1 endpoint already registered on address /rest等相关知识的信息别忘了在本站进行查找喔。

本文标签: