Django报错ModuleNotFoundError: No module named 'view'求助解决
解决Django urls.py导入views模块的错误
问题场景
playground应用目录结构如下:
playground/ ├── urls.py ├── view/ │ ├── __init__.py │ └── views.py
urls.py原代码:
from django.urls import path from view import views urlpatterns = [ path('hello/', views.say_hello) ]
执行python manage.py runserver时报错:
File "/Users/swathikumar/Desktop/storefront/playground/urls.py", line 3, in
from view import views
ModuleNotFoundError: No module named 'view'
views.py代码:
from django.shortcuts import render from django.http import HttpResponse def say_hello(request): return HttpResponse('Hello World.')
解决方案
方案1:使用相对导入
利用Python相对导入语法,在导入路径前加.表示当前目录的子模块,修改urls.py如下:
from django.urls import path from .view import views urlpatterns = [ path('hello/', views.say_hello) ]
方案2:使用绝对导入
以应用名playground作为前缀明确指定模块路径(需确保playground已添加到项目settings.py的INSTALLED_APPS列表中):
from django.urls import path from playground.view import views urlpatterns = [ path('hello/', views.say_hello) ]
原因说明
直接写from view import views会让Python在全局模块搜索路径中查找view模块,但你的view文件夹是playground应用的子目录,不在全局搜索路径内。通过相对导入(指定当前目录)或绝对导入(带上应用名前缀),才能让Python定位到正确的模块位置。
内容的提问来源于stack exchange,提问作者Swathi Kumar
相关产品推荐
相关产品推荐

