it-swarm.com.ru

Django - включить URL-адреса приложений

У меня есть следующая структура (Django 1.4):

containing_dir/
    myproject/
        myapp1/
        myapp2/
        myapp3/

myproject, myapp1, myapp2 и myapp3 имеют init. py, поэтому они все модули.

В manage.py (в котором содержится_dir) у меня есть os.environ.setdefault("Django_SETTINGS_MODULE", "myproject.settings")

в myproject.settings я определяю:

[..]
ROOT_URLCONF = 'myproject.urls'
INSTALLED_APPS = (   
    [..]
    'myproject.myapp1',
    'myproject.myapp2',
    'myproject.myapp3',
)
[..]

В myapp1.urls.py я определяю:

urlpatterns = patterns('myapp1',
    url(r'^agent/$', 'views.agent',    name='agent')
)

и я пытаюсь импортировать его в myproject.urls Я пытаюсь импортировать URL-адреса myapp1 следующим образом:

(r'^myapp1/', include('myproject.myapp1.urls'))

но всякий раз, когда я пытаюсь загрузить lo localhost:8000/myapp1/agent, я получаю

Exception Value: No module named myapp1

Я думаю, что выброшены из-под myapp1.urls

Любая помощь? Спасибо

8
pistacchio

Вы должны иметь

__init__.py

файл внутри вашего каталога "myproject". Когда ты сказал:

(r'^myapp1/', include('myproject.myapp1.urls'))

вы говорите, что "myproject" (как и myapp1) является пакетом python.

6
Raydel Miranda

В myproject.settings внесите следующие изменения:

INSTALLED_APPS = (   
[..]
'myapp1',
'myapp2',
'myapp3',
)
3
Tejas

Чтобы решить эту проблему, просто выберите каталог "myproject" в PyCharm и установите его в качестве исходного корня. Ваш проект не знает, из какого корня он должен искать данное приложение. Это исправило проблему для меня. Спасибо.

0
vinoth10

Должен ли ROOT_URLCONF указывать на myproject.urls?

Если вы размещаете свои приложения внутри myproject, вам нужно использовать правильный просмотреть префикс .

urlpatterns = patterns('myproject.myapp1',
...
0
Ngenator

Попытка:

urlpatterns = [
    ...
    url(r'^app_name/', include('app_name.urls', namespace='project_name'))
    ...
]
0
Vaishnav Mhetre