2016-02-11 2 views
0

После django-rest tutorialDjango не может импортировать приложение

приложение/urls.py:

from django.conf.urls import url, include 
from rest_framework import routers 
from app.abbr import views 

router = routers.DefaultRouter() 
router.register(r'users', views.UserViewSet) 
router.register(r'groups', views.GroupViewSet) 

# Wire up our API using automatic URL routing. 
# Additionally, we include login URLs for the browsable API. 
urlpatterns = [ 
    url(r'^', include(router.urls)), 
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')) 
] 

Структура каталогов:

enter image description here

Ошибка:

File "..../app/app/urls.py", line 3, in from app.abbr import views ImportError: No module named 'app.abbr'

Итак, вздох ...

+0

Пожалуйста, следуйте шаг за шагом, слово за словом учебник прежде чем делать что-либо, чтобы настроить его (изменение макета, имена приложений и co). После того, как вы это сделаете, вы сможете переделать с некоторыми изменениями. Не сложность стека. – Linovia

ответ

1

Было бы полезно, если бы вы указали на учебник, который показал вам, как это сделать.

Нельзя ввозить из app; это относится к внутреннему каталогу, содержащему ваш urls.py. Просто импортируйте из abbr.

from abbr import views 
+0

Добавлена ​​ссылка. Ваше решение, похоже, работает; не возражаете ли вы взглянуть на учебник и вспомнить, почему у них такое? Они явно создают проект «учебник», а затем приложение «quickstart» и ссылаются на него в «urls.py», как я. Может ли их решение работать? – Tjorriemorrie

+0

Я не знаю внутренности python на глубоком уровне, но думаю, что, поскольку у вас есть модули приложений, python предполагает, что вы пытаетесь импортировать приложение из ближайшего модуля (родителя urls.py). https://github.com/tomchristie/rest-framework-tutorial Обратите внимание, что они делают 'mkdir tutorial' и' cd tutorial', но после этого они делают 'cd tutorial' еще раз. – Paul

0

А что, если вы измените импорт следующим образом? from app.app.abbr import views?

+0

'ИмпортError: Нет модуля с именем 'app.app'' – Tjorriemorrie

+0

Похоже, ваш файл manage.py находится в модуле app.app (если я правильно понял ваш экран). Вы уверены, что он должен быть размещен там, а не в первом «приложении»? В прикрепленном к упомянутому учебнике репо https://github.com/tomchristie/rest-framework-tutorial управляйте.py, помещенный в корень каталога. – Paul

+0

Я вижу, что они используют 'django-admin.py' для создания приложения, и я использовал' manage.py'. Есть ли разница? – Tjorriemorrie

0

Я рассматриваю, что вы используете Джанго 1.9 +

Попробуйте эту папку

from . import views 
0

корневой каталог с именем приложения в вашем случае назван в честь вашего имени проекта по умолчанию, когда вы начинаете новый проект через команду запуска проекта django-admin.

вы можете переименовать свою папку корневого каталога в любое удобное для вас время и не повлияет на ваш проект.

Когда ваш код импортируется из приложения, он фактически просматривает папку «приложение», содержащую файл «settings.py».

django-rest tutorial вы следуете содержит ошибку, когда они делают from tutorial.quickstart import views, которые должны быть from quickstart import views

так то же самое для вас, вы должны сделать from abbr import views

Смежные вопросы