我在项目中使用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/
答案 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文件夹。