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

时间:2020-06-16 12:22:51

标签: python django url path project

我试图使用ModelViewSet来显示用户,但是由于某些原因,Django似乎不喜欢在project / urls.py中导入UserViewSet。似乎是一个非常愚蠢的错误,但是我对此坚持了一段时间,这令人沮丧。据我所知,代码中没有任何错误,并且导入功能完全正常。我想念什么吗?

Django 2.2.13版

project / urls.py

from django_backend.user_profile.views import UserViewSet

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

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

userprofile / views.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

2 个答案:

答案 0 :(得分:2)

从评论中我们发现,您的问题的直接答案是:您正在导入django_backend,这是项目的根,但还不存在正式的Python package sys.path中的内容,因此无法原样导入。

由于Django将sys.path设置为项目的根目录,因此您需要导入user_profile.views而不包含django_backend部分:

from user_profile.views import UserViewSet

执行完此操作后,您可以考虑配置PyCharm以使django_backend文件夹是您的“源根目录”。这将告诉PyCharm在哪里寻找Python代码,从而在尝试从Django目录导入模块时不会显示错误。

答案 1 :(得分:1)

python解释器在sys.path中列出的目录中搜索模块。 Touc可以临时打印sys.path来检查是否列出了'reactjs-comeon'。

根据文件的运行方式,可能不包括该文件。例如,如果您运行project> python urls.py,则不是。您可以将目录手动添加到sys.path中,以作为快速解决方案。

但是,一般而言,我建议您阅读有关{/ {3}}的相对/绝对进口和包装的信息