ModuleNotFoundError:没有名为“ apps”的模块

时间:2019-03-30 23:55:54

标签: django django-rest-framework django-views django-urls

我在项目中使用Django 1.9和DRF 3.9.2。在我的urls.py中,我使用了此代码

from django.conf import settings
from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^api/', include('apps.rest_slack.urls', namespace='rest_slack')),
]

并且我在rest_slack-urls.py中设置了一个路由器

from django.conf.urls import url
from rest_framework import routers
from rest_slack.views import DRSEventView, DRSCommandView

router = routers.DefaultRouter()
router.register(r'web', DRSEventView)
router.register(r'events', DRSCommandView)

urlpatterns = router.urls

当我尝试运行服务器时,它给我ModuleNotFoundError:没有名为“ apps”的模块错误。请告诉我我可以做些什么改变?

myproject/
 |-- slack/
 |    |-- rest_slack/                
 |    |    |-- migrations/
 |    |    |    +-- __init__.py
 |    |    |-- __init__.py
 |    |    |-- admin.py
 |    |    |-- apps.py
 |    |    |-- models.py
 |    |    |-- tests.py
 |    |    |-- urls.py
 |    |    +-- views.py
 |    |-- slack/
 |    |    |-- __init__.py
 |    |    |-- settings.py
 |    |    |-- urls.py
 |    |    |-- wsgi.py
 |    +-- manage.py
 +-- venv/

2 个答案:

答案 0 :(得分:0)

欢迎堆栈溢出!

当您将虚线字符串作为第一个参数传递到include()时,它将尝试导入该路径。如果import apps.rest_slack.urls不起作用,那么您的include()也将不起作用。

从文件夹结构的外观来看,您似乎需要使用include('rest_slack.urls', ...)

要确认是否是这种情况,您可以在import rest_slack.urls中运行./manage.py shell,或者直接在slack/urls.py中进行更改,看看是否可行。

答案 1 :(得分:0)

从您的项目结构看来,您的网址应该像这样配置:

from django.conf import settings
from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^api/', include('slack.rest_slack.urls', namespace='rest_slack')),
]

或者如果不起作用,请尝试:

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^api/', include('myproject.slack.rest_slack.urls', namespace='rest_slack')),
]

您的项目结构为myproject.slack.rest_slack.urls.py。我在任何地方都看不到apps文件夹。