我试图使用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'
项目结构
答案 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}}的相对/绝对进口和包装的信息