You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行Django项目services.py时遭遇Apps aren't loaded yet错误求助

解决Django中直接运行脚本出现AppRegistryNotReady的问题

嘿,这个坑我太熟了!你直接运行services.py的时候,Django的整个环境还没启动呢,它根本不知道你的应用和模型定义在哪儿,自然就会抛出这个“应用还没加载”的错误。给你两个靠谱的解决办法,按需选:

方法一:用Django自定义命令(官方推荐,长期维护首选)

这是最符合Django工作流的方式,以后维护起来也方便:

  • 第一步:在你的Django应用目录下,新建management/commands文件夹,记得给这两个文件夹都加上空的__init__.py文件,不然Django识别不到。
  • 第二步:在commands里新建一个脚本,比如叫populate_db.py,内容大概是这样:
from django.core.management.base import BaseCommand
from your_app.models import Authority, Rating

class Command(BaseCommand):
    help = '填充数据库的自定义命令'

    def handle(self, *args, **options):
        # 把你原来services.py里的填充数据库逻辑放到这里
        # 比如:
        Authority.objects.create(name="示例机构")
        Rating.objects.create(score=5, authority=Authority.objects.first())
        self.stdout.write(self.style.SUCCESS('数据库填充完成!'))
  • 第三步:在项目根目录(有manage.py的那个目录)运行命令:python manage.py populate_db,就可以正常执行填充逻辑啦。

方法二:手动初始化Django环境(适合临时脚本)

如果只是临时跑一下脚本,不想搞自定义命令,可以在你的services.py里先初始化Django环境,再导入模型:

if __name__ == '__main__':
    import os
    # 替换成你的项目settings模块路径,比如'my_project.settings'
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', '你的项目名.settings')
    import django
    django.setup()
    
    # 现在再导入模型和执行填充逻辑
    from your_app.models import Authority, Rating
    # 这里写你的填充代码

注意:一定要把模型导入和业务逻辑放到django.setup()之后,不然还是会报错。

小提醒

别把模型的导入写在脚本全局位置哦,那样不管你是不是直接运行脚本,导入的时候都会触发Django的模型加载,容易在其他地方引入奇怪的错误~

内容的提问来源于stack exchange,提问作者Mike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:29:22