Django导入landing.views时报No module named 'views'错误求助
错误原因
- 你在
settings.py的INSTALLED_APPS配置项中错误添加了非app的条目,比如填入了views或landing.views,Django在加载注册应用时尝试导入该条目对应模块失败 landing应用未正确注册到INSTALLED_APPS中,Django无法识别该应用下的模块- 项目目录结构不符合Django规范:
landing文件夹下缺少标识Python包的__init__.py文件,或是views.py未放在landing文件夹下,或是你把views做成了子包但没有在__init__.py中导出Index类 - 你手动添加的
sys.path路径、修改的PYTHONPATH环境变量均为错误配置,你添加的是urls.py的文件路径,而sys.path仅识别文件夹路径,多余的路径配置反而干扰了正常的模块查找逻辑 landing/views.py中未正确定义Index类视图,或是存在拼写、大小写错误
解决方案
- 修正
INSTALLED_APPS配置:删除所有错误条目,仅保留landing或landing.apps.LandingConfig作为landing应用的注册项,示例配置:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', # 新增landing应用注册 'landing', ]
- 核对项目目录结构,确保和以下结构一致(manage.py所在目录为项目根目录):
<项目根目录> ├── <项目核心配置文件夹> │ ├── __init__.py │ ├── settings.py │ ├── urls.py │ └── asgi.py/wsgi.py ├── landing │ ├── __init__.py │ ├── apps.py │ ├── views.py │ └── urls.py(你贴出的这份urls.py如果是应用内路由,必须放在该路径下) └── manage.py
- 确认
landing/views.py中正确定义了Index类视图,示例:
from django.views import View from django.http import HttpResponse class Index(View): def get(self, request): return HttpResponse("测试首页")
- 删除所有你手动添加的
sys.path相关代码,恢复PYTHONPATH环境变量的默认配置,避免多余配置干扰模块导入。 - 如果你采用了拆分views的结构(即
landing下是views文件夹而非单个views.py文件),需要在landing/views/__init__.py中添加导出逻辑:
# 假设Index类定义在landing/views/index.py中 from .index import Index
内容的提问来源于stack exchange,提问作者KronosHedronos2077
相关产品推荐
相关产品推荐

