Django ViewSet ModuleNotFoundError: 没有名为 "项目名称 "的模块

问题描述 投票:1回答:2

我想用ModelViewSet来显示Users,但不知为什么Django似乎不喜欢在projecturls.py中导入UserViewSet。看起来是一个很愚蠢的错误,但我已经被这个问题卡住了一段时间,这很令人沮丧。据我所知,我的代码中没有任何错误,导入也完全正常。我是不是遗漏了什么?

Django 2.2.13版本

projecturls.py

from django_backend.user_profile.views import UserViewSet

router = routers.DefaultRouter()
router.register('user', UserViewSet)

urlpatterns = [
    path('accounts/', include(router.urls)),
]

userprofileviews.py

class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()#.order_by('-date_joined')
    serializer_class = UserSerializer

from django_backend.user_profile.views import UserViewSet
ModuleNotFoundError: No module named 'django_backend'

项目结构

enter image description here

python django url path project
2个回答
1
投票

从评论中,我们发现你的问题的直接答案是这样的。你导入的是 django_backend,它是你项目的根,但不是一个正式的 Python包 存在于 sys.path 因此不能以这种方式导入。

由于Django将 sys.path 到你的项目根目录,你需要导入 user_profile.viewsdjango_backend 部分。

from user_profile.views import UserViewSet

一旦你这样做了,你可以考虑配置PyCharm,让它知道 django_backend 文件夹是你的Sources Root。这将告诉PyCharm在哪里寻找Python代码,这样它就不会在尝试从你的Django目录导入模块时出现错误。


1
投票

python解释器会在sys.path中列出的目录中搜索模块。你可以通过打印sys.path来检查是否有 "reactjs-comeon "被列出。

根据你运行文件的方式,它可能不在其中。例如,如果你运行project> python urls.py,它就不会被包含。你可以手动添加目录到sys.path中,作为一个快速的解决方案。

不过一般来说,我建议你阅读一下关于相对绝对导入和打包的文章,内容包括 https:/docs.python.org3referenceimport.html。

© www.soinside.com 2019 - 2024. All rights reserved.