2012-04-07 14 views
3

Ich habe eine Django-App, die ich in den 1.2 Tagen entwickelt habe. Ich versuche jetzt, es in das 1.4 Projektformat zu portieren.'App' Ebene importiert mit Django 1.4?

Die alte Art und Weise mein Projekt eingestellt wurde, war wie folgt:

django_project/ 
    settings.py 
    manage.py 
    urls.py 
    app1/ 
    app2/ 
    app3/ 

ich es bin Änderung der neuen manage.py und meine Verzeichnisse wie folgt aussehen zu verwenden:

django_project/ 
    manage.py 
    project 
     urls.py 
     wsgi.py 
     app1/ 
     app2/ 
     app3/ 

Die Problem ist, dass überall in meinem Code ich Sachen wie diese importieren:

from app1.models import SomeModel 

was gibt mir jetzt einen Importfehler. Doing this behebt es:

Ich möchte wirklich nicht mein ganzes Projekt gehen, um alle diese Importe zu ändern. Gibt es etwas, das mir fehlt? Gibt es einen leichteren Weg? Oder soll das so sein?

+1

Für die Zukunft ist dies die Art von Sache, die Refactoring-Tools in einer IDE tun sollen. – aaronasterling

+0

Ein Hinweis auf andere, die auf 1,4 bewegen: stellen Sie sicher, Ihre entfernen '__init __ py' aus dem Projekt root (der Ordner, der sowohl' ' Modul und alle Anwendungen enthält), wenn Sie einen hatte.. Ich bin mir nicht sicher, ob das etwas war, was mit 1.3 kam oder ob ich es versehentlich eintrage, aber egal, es wird Ihre Importe brechen, wenn Sie das neue 'manage.py' verwenden, um Tests durchzuführen. – hangtwenty

Antwort

4

Sie sollten nicht Ihre Anwendungen in das project Modul setzen. Djangos startapp fügt sie in das Projektstammverzeichnis ein, so wie zuvor. project Modul ist ein Ort für projektweite Einstellungen, URLs und solche Sachen nur. Ihre Apps sollten im Projektstamm bleiben.

1

Sie können Ihr aktuelles Layout halten, da es gut funktioniert wird. Bei neuen Projekten können Sie Ihre Apps nach Möglichkeit in das Modul "Projekt" einfügen. Wenn Sie das 1.4 Release Notes überprüfen, sehen Sie, dass es das empfohlene Layout ist. Aber wenn Sie Generika-Apps entwickeln (die Sie in mehr als einem Projekt verwenden können), ist der Projektstamm wahrscheinlich der bessere Ort.

Verwandte Themen