2013-04-08 1 views
6

ho la seguente struttura (Django 1.4):Django - includere URL app

containing_dir/ 
    myproject/ 
     myapp1/ 
     myapp2/ 
     myapp3/ 

myproject, myapp1, MyApp2, e tutti hanno myapp3 init .py, quindi sono tutti i moduli.

In manage.py (sotto containing_dir) Ho os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")

in myproject.settings Mi definisco:

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

In myapp1.urls.py Mi definisco:

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

e Provo ad importarlo in myproject.urls Cerco di importare gli url myapp1 in questo modo:

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

ma ogni volta che provo carico lo localhost:8000/myapp1/agent ottengo

Exception Value: No module named myapp1 

Penso buttato da withing myapp1.urls

Qualsiasi aiuto? grazie

risposta

0

ROOT_URLCONF deve indicare myproject.urls?

Se si posizionano le app all'interno di myproject è necessario utilizzare l'appropriato view prefix.

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

sì, perché voglio creare applicazioni riutilizzabili e staccabili. – pistacchio

+0

@pistacchio Quindi è molto probabile che sia necessario creare uno script di installazione per le app in modo che vengano aggiunte al percorso Python. Oppure aggiungili manualmente. – Ngenator

6

È necessario disporre di un file

__init__.py 

all'interno della vostra directory "myproject". Quando si dice:

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

che stai dicendo "myproject" (così come myapp1) è un packege pitone.

3

In myproject.settings effettuare le seguenti modifiche:

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

Prova:

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