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

独立目录脚本无法加载Django模型,如何正确调用并操作数据库?

解决Django外部脚本无法导入模型的问题

问题原因

脚本找不到snippets模块,核心原因是未将Django项目的根目录(Main-Project/django/)添加到Python模块搜索路径,同时导入语句和部分语法存在错误。

修正步骤

1. 调整模块搜索路径,添加Django项目根目录

原脚本仅将Main-Project/加入搜索路径,但snippets应用位于Main-Project/django/目录下,需把该目录也加入sys.path:

import os
import sys
import django

current_dir = os.path.dirname(os.path.abspath(__file__))
# 拿到Main-Project/目录
parent_dir = os.path.dirname(current_dir)
# 拼接出Django项目根目录:Main-Project/django/
django_project_dir = os.path.join(parent_dir, 'django')
# 将Django项目根目录加入模块搜索路径
sys.path.append(django_project_dir)

2. 修正模型导入语句

原导入语句from django.snippets.models import Snippet错误,正确写法是直接从snippets应用导入:

from snippets.models import Snippet

3. 修复脚本语法错误

原脚本中filename.endwith('.txt')为拼写错误,需改为filename.endswith('.txt')。

完整修正后的脚本

import os
import sys
import django

current_dir = os.path.dirname(os.path.abspath(__file__))
parent_dir = os.path.dirname(current_dir)
django_project_dir = os.path.join(parent_dir, 'django')
sys.path.append(django_project_dir)

# 修正settings模块路径,原写法django.django.settings错误
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'django.settings')
django.setup()

from snippets.models import Snippet

def import_articles(directory):
    for filename in os.listdir(directory):
        if filename.endswith('.txt'):
            file_path = os.path.join(directory, filename)
            # 添加utf-8编码避免中文读取报错
            with open(file_path, 'r', encoding='utf-8') as file:
                content = file.read()
                Snippet.objects.create(filename=filename, content=content)

if __name__ == '__main__':
    text_dir = os.path.join(current_dir, 'text-files')
    import_articles(text_dir)

额外说明

  • DJANGO_SETTINGS_MODULE需对应正确路径:你的settings.py位于Main-Project/django/django/settings.py,因此设置为django.settings即可,无需嵌套两层django。
  • 读取文件时指定encoding='utf-8',可避免中文文本出现编码异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 06:22:41