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

运行Django填充脚本报DJANGO_SETTINGS_MODULE配置错误该如何解决?

错误原因

你脚本里的导入顺序有误:导入Django模型from first_app.models import AccessRecord, Webpage, Topic的代码,放在了Django环境初始化操作的前面。Python执行脚本时会优先运行所有顶层导入语句,此时还没有完成Django配置的加载,访问模型时就会触发配置未初始化的报错。

解决方法

调整导入顺序,把Django模型的导入放到os.environ.setdefault和django.setup()之后即可,修正后的完整代码如下:

import os
import django
import random
from faker import Faker

# 先初始化Django环境
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
django.setup()

# 环境初始化完成后再导入模型
from first_app.models import AccessRecord, Webpage, Topic

# FAKE POP SCRIPT
fakegen = Faker()
topics = ['Search', 'Social', 'Market', 'News', 'Games']


def add_topic():
    t = Topic.objects.get_or_create(top_name=random.choice(topics))[0]
    t.save()
    return t


def populate(N=5):
    for entry in range(N):
        # get the topic for the entry
        top = add_topic()

        # create the fake data for that entry
        fake_url = fakegen.url()
        fake_date = fakegen.date()
        fake_name = fakegen.company()

        # create the new webpage entry
        webpg = Webpage.objects.get_or_create(
            topic=top, url=fake_url, name=fake_name)[0]

        # create a fake access record for that webpage
        acc_rec = AccessRecord.objects.get_or_create(
            name=webpg, date=fake_date)[0]


if __name__ == '__main__':
    print('populating script..')
    populate(20)
    print('Populating complete')

其他异常排查

如果调整顺序后仍报错,可逐一核对以下配置:

  • 脚本需要放在Django项目根目录,和manage.py文件同级存放,否则无法正确加载项目配置
  • 确认os.environ.setdefault里的项目名和你实际创建的Django项目名一致,如果你创建项目时的名称不是mysite,需要替换为对应名称
  • 运行脚本前确认已经激活Django项目对应的虚拟环境,且环境内已安装匹配版本的Django和Faker依赖

内容的提问来源于stack exchange,提问作者Tomás

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:39:02