ModuleNotFoundError: нет модуля с именем 'apps' - PullRequest
1 голос
/ 31 марта 2019

Я использую 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 голосов
/ 31 марта 2019

Из структуры вашего проекта выглядит, как будто ваши URL должны быть настроены следующим образом:

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. Я не вижу там папки с приложениями.

0 голосов
/ 31 марта 2019

Добро пожаловать в переполнение стека!

Когда вы передаете пунктирную строку в качестве первого аргумента include(), он пытается импортировать этот путь.Если import apps.rest_slack.urls не будет работать, ваш include() тоже не будет работать.

Судя по структуре вашей папки, вам, вероятно, придется использовать include('rest_slack.urls', ...).

.подтвердите, если это так, вы можете запустить import rest_slack.urls в ./manage.py shell или просто внести изменения в slack/urls.py и посмотреть, работает ли он.

...