2016-05-15 2 views
0

Я работал с django 1.7 и недавно начал новый проект с django 1.9. Основное отличие от запуска нового приложения заключалось в том, что новое приложение создается с помощью файла apps.py. Я читал на django docs, что теперь вы должны использоватьDjango 1.9 не найден newapp

INSTALLED_APPS = [ 
    'newapp.apps.NewAppConfig', 
    ... 
] 

(старый был просто 'newapp')

В моем новом проекте у меня есть все мои приложения в новом каталоге под названием «MyApps». Но если я использую 'myapps.newapp.apps.NewAppConfig' чем Джанго дает ошибку ImportError: No module named newapp Но если я использовать старый способ т.е.

INSTALLED_APPS = [ 
    'myapps.newapp', 
    ... 
] 

Чем это отлично работает без ошибок, но конфига в apps.py файла не может быть применена (я не» я знаю, как это работает).

Так что это правильный способ установить newapp в настройки INSTALLED_APPS для django 1.9, когда вы получили все ваши новые приложения в другом каталоге, например «myapps» с файлом конфигурации apps.py?

+0

Вы не "должны" использовать его. Старый метод 'myapps.newapp'' в равной степени действителен. Используйте только более длинную версию, если вам нужно запускать файлы в 'apps.py' – C14L

+0

@ C14L да, я понимаю, что вам это не нужно, но это мой вопрос, что если мне нужно будет использовать apps.py в будущем, и я просто не может использовать эту функцию из-за моей структуры каталогов. –

+0

В вашем каталоге 'newapp' содержится' __init __. Py'? –

ответ

1

Если каталог приложений находится в каталоге myapps, то проверьте следующее:

  1. Ваш myapps каталог должен иметь __init__.py

  2. Включите myapps в пути, когда вы включаете приложение в INSTALLED_APPS , т.е. 'myapps.newapp.apps.NewAppConfig',

  3. Включить myapps в приложение conf IG в name атрибут:

    class NewAppConfig(AppConfig): 
        name = 'myapps.newapp' 
    
+0

Спасибо человеку. Мне не хватало третьего пункта ... У меня было имя = 'newapp' в apps.py, и это вызывало все проблемы. –

0

Если ваше приложение находится в каталоге «myapps», вам все равно необходимо включить его в путь: "myapps.newapp.apps.NewAppConfig".

+0

Как я заявил в вопросе с помощью «myapps.newapp.apps.NewAppConfig» дает ImportError: нет модуля с именем newapp –

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