2013-04-08 28 views
6

Mam następującą strukturę (Django 1.4):Django - zawierają adresy URL aplikacji

containing_dir/ 
    myproject/ 
     myapp1/ 
     myapp2/ 
     myapp3/ 

myproject, myapp1, myapp2 i myapp3 mają startowych .py, więc są wszystkie moduły.

W manage.py (w containing_dir) Mam os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")

w myproject.settings i określenia:

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

W myapp1.urls.py zdefiniować:

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

i Próbuję zaimportować go do pliku myproject.urls. Próbuję zaimportować adresy URL takie jak:

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

ale gdy próbuję obciążenie lo localhost:8000/myapp1/agent uzyskać

Exception Value: No module named myapp1 

myślę wyrzucony z withing myapp1.urls

Każda pomoc? dzięki

Odpowiedz

0

Czy muszę ROOT_URLCONF wskazywać na myproject.urls?

Jeśli umieścisz swoje aplikacje wewnątrz myproject, musisz użyć właściwego view prefix.

urlpatterns = patterns('myproject.myapp1', 
... 
+1

tak, bo chcą tworzyć aplikacje wielokrotnego użytku i odłączane. – pistacchio

+0

@pistacchio Następnie najprawdopodobniej musisz utworzyć skrypt instalacyjny dla aplikacji, aby zostały dodane do ścieżki Pythona. Lub ręcznie dodaj je. – Ngenator

6

Musisz mieć plik w katalogu "myproject"

__init__.py 

. Gdy powiesz:

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

mówisz "myproject" (jak również myapp1) to pakiet python.

3

W myproject.settings dokonać następujących zmian:

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

Spróbuj:

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