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

使用Django 2.0.2开发Web应用遇ModuleNotFoundError问题求助

解决Django中ModuleNotFoundError: No module named 'myapp.views.hello'的问题

我来帮你捋捋这个问题,这种报错大概率是视图文件/目录的结构或者导入路径写错了,咱们一步步排查:

首先确认你的目录结构

先看看你的myapp下面是views.py文件,还是views目录?正确的基础结构应该是这样的:

你的项目根目录/
├── 项目配置目录/
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── myapp/
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── models.py
│   ├── views.py  # 重点:这里是单个.py文件,不是目录!
│   └── migrations/
│       └── __init__.py
└── manage.py

情况1:你误把views.py改成了views目录

如果是为了拆分视图模块(比如把不同功能的视图放到不同文件里),那你需要:

  • 在myapp/views/目录下创建一个空的__init__.py文件——这是Python识别目录为“包”的标志,没有它,myapp.views就不是合法的包,自然没法导入子模块。
  • 调整导入方式:
    • 假设myapp/views/hello.py里定义了hello视图函数,你可以在项目的urls.py里直接写:
      from myapp.views.hello import hello
      
    • 或者在myapp/views/__init__.py里提前导入:
      from .hello import hello
      
      这样在urls.py里就可以用更简洁的from myapp.views import hello来导入了。

如果是不小心把views.py改成了目录,那直接把目录改回views.py文件,把里面的代码合并回去就行。

情况2:你的views.py是文件,但导入路径写错了

如果hello是views.py里定义的一个函数,那你之前写的from myapp.views.hello import ...是错误的——因为hello是函数,不是views下面的子模块。正确的导入应该是:

from myapp.views import hello

对应的urls.py配置应该是这样的:

from django.urls import path
from myapp.views import hello

urlpatterns = [
    path('hello/', hello, name='hello'),
]

情况3:别忘了检查INSTALLED_APPS

虽然这个报错提示不是直接因为这个,但还是要确认settings.py里的INSTALLED_APPS已经添加了myapp:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp',  # 必须加上这个
]

最后再验证一下

修改完之后,重启Django开发服务器,再访问对应的路由,应该就能解决这个问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:26:45