2013-04-08 18 views
6

Ich habe die folgende Struktur (Django 1.4):Django - schließen App-URLs

containing_dir/ 
    myproject/ 
     myapp1/ 
     myapp2/ 
     myapp3/ 

myproject, Myapp1, myapp2 und myapp3 alle init .py haben, so sind sie alle Module.

In manage.py (unter containing_dir) Ich habe os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")

in myproject.settings i definieren:

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

In myapp1.urls.py I definiert werden:

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

und Ich versuche, es in myproject.urls zu importieren. Ich versuche myapp1 URLs wie folgt zu importieren:

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

aber wenn ich lo Last localhost:8000/myapp1/agent versuchen bekomme ich

Exception Value: No module named myapp1 

ich von withing myapp1.urls geworfen denken

Jede Hilfe? danke

Antwort

0

Muss ROOT_URLCONF auf myproject.urls zeigen?

Wenn Sie Ihre Apps innerhalb von myproject platzieren, müssen Sie den richtigen view prefix verwenden.

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

ja, weil ich wieder verwendbar und abnehmbare Anwendungen erstellen möchten. – pistacchio

+0

@pistacchio Dann müssen Sie höchstwahrscheinlich ein Installationsskript für die Apps erstellen, damit sie zum Python-Pfad hinzugefügt werden. Oder fügen Sie sie manuell hinzu. – Ngenator

6

Sie müssen in Ihrem "myproject" Verzeichnis

__init__.py 

-Datei haben. Wenn Sie sagen:

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

Sie sagen "myproject" (wie auch Myapp1) ist ein Python packege.

3

In myproject.settings machen folgende Änderungen:

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

Versuchen:

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