AppRegistryNotReady

AppRegistryNotReady(“Apps aren’t loaded yet.”)

Django的初始化加载顺序是:
应用程序注册表分三个阶段初始化。在每个阶段,Django按顺序处理所有应用程序INSTALLED_APPS。

第一个Django导入每个项目INSTALLED_APPS。

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

在此阶段,您的代码不应导入任何模型!(我的bug原因就是这个)

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

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

一旦此阶段完成,就可以在应用程序配置上运行的API get_app_config()变得可用。

然后Django尝试导入models每个应用程序的子模块(如果有的话)。

你必须定义或导入全系车型在您的应用程序models.py或 models/init.py。否则,此时应用程序注册表可能未完全填充,这可能导致ORM出现故障。

一旦这个阶段完成,那些在模型上运行的API就 get_model()变得可用了。

最后,Django运行ready()每个应用程序配置的方法。

详情:
https://docs.djangoproject.com/en/1.9/ref/applications/#how-applications-are-loaded

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值