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

Django应用中新增自定义模块无法识别的问题咨询

解决Django应用中导入同目录模块的问题

嘿,作为Django新手遇到这个导入问题太正常了,别慌——你的代码拆分思路完全没问题,只是导入的方式没找对而已!

为什么会报错?

当你在views.py里直接写import main时,Python会在系统默认路径和项目根目录下查找名为main的模块,但你的main.py和views.py在同一个应用文件夹(my-app/)里,属于同一层级的模块,这种场景需要用相对导入或者带应用名的绝对导入,而不是直接import。

正确的导入方法

根据你的文件结构:

my-app/
├─ views.py
└─ main.py

你有两种简单的解决方式:

  • 相对导入:在views.py里使用当前目录的相对路径导入

    from . import main
    

    这里的.代表当前模块所在的目录(也就是my-app/),Python会精准找到同目录下的main.py。

  • 绝对导入:用你的应用名称作为前缀导入(注意如果应用名里有横杠,要换成下划线,比如my-app要写成my_app)

    from my_app import main
    

    这种方式更清晰,尤其当项目结构复杂时,不容易混淆模块位置。

更规范的代码拆分方案(可选)

如果后续你的应用代码越来越多,推荐把相关功能的文件放到子包中,让结构更清晰:

  1. 在my-app/下创建一个子文件夹,比如utils或者core
  2. 在子文件夹里创建__init__.py(Python3.3+可以省略,但加上更符合传统包规范)
  3. 把main.py放到这个子文件夹里,结构变成:
    my-app/
    ├─ views.py
    └─ utils/
       ├─ __init__.py
       └─ main.py
    
  4. 导入时就可以写成:
    from my_app.utils import main
    
    这种方式能更好地归类代码,避免根目录文件过多。

放心,Django完全支持这种代码拆分方式,这样能让你的views.py保持简洁,专注于处理请求逻辑,是非常好的实践哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 18:29:06