导入Django contrib User模块触发AppRegistryNotReady报错如何解决
Django
AppRegistryNotReady: Apps aren't loaded yet 报错原因及解决方案 报错原因
该异常由Django应用初始化机制触发:仅设置Django配置模块环境变量后,Django还未完成内置、自定义应用的注册和加载流程,所有模型元数据都未完成初始化,此时直接导入模型就会抛出该错误。
解决方案
方案1:使用Django自带Shell(优先选择)
Django自带的python manage.py shell命令会自动完成全部初始化流程,无需手动配置环境变量和加载应用,直接执行以下命令进入交互环境即可:
venv/bin/python3 manage.py shell
进入Shell后直接执行导入操作即可:
from django.contrib.auth.models import User
方案2:原生Python环境手动初始化
如果需要在原生Python交互环境中操作Django模型,在设置配置环境变量后,需要先调用django.setup()完成应用加载,完整操作流程如下:
import os import django os.environ.setdefault("DJANGO_SETTINGS_MODULE", "directory.settings") # 手动触发Django初始化,完成所有应用注册 django.setup() # 初始化完成后即可正常导入模型 from django.contrib.auth.models import User
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

