python - tutorial - Wie ändere ich den Namen einer Django App?




python start django server (3)

Befolgen Sie diese Schritte, um den Namen einer App in Django zu ändern:

  1. Benennen Sie den Ordner um, der sich in Ihrem Projektstamm befindet
  2. Ändern Sie alle Verweise auf Ihre App in ihren Abhängigkeiten, z. B. in den Dateien views.py , urls.py , manage.py und settings.py der App.
  3. Bearbeiten Sie die Datenbanktabelle django_content_type mit dem folgenden Befehl: UPDATE django_content_type SET app_label='<NewAppName>' WHERE app_label='<OldAppName>'
  4. Auch wenn Sie Modelle haben, müssen Sie die Modelltabellen umbenennen. Für Postgres verwenden Sie ALTER TABLE <oldAppName>_modelName RENAME TO <newAppName>_modelName . Auch für mysql denke ich, es ist das gleiche (wie von @null_radix erwähnt)
  5. (Für Django> = 1.7) Aktualisieren Sie die Tabelle django_migrations , damit die vorherigen Migrationen nicht erneut ausgeführt werden: UPDATE django_migrations SET app='<NewAppName>' WHERE app='<OldAppName>' . Hinweis : Es gibt eine Debatte (in Kommentaren), ob dieser Schritt für Django 1.8+ erforderlich ist; Wenn jemand sicher weiß, bitte hier aktualisieren.
  6. Wenn die Meta-Klasse von app_name aufgelistet hat, vergewissere app_name , dass app_name sie ebenfalls umbenennst (wird von @will erwähnt).
  7. Wenn Sie Ihre static Ordner oder templates in Ihrer App mit einem Namespace versehen haben, müssen Sie diese ebenfalls umbenennen. old_app/static/old_app Sie z. B. old_app/static/old_app in new_app/static/new_app .
  8. Um Django- models umzubenennen, müssen django_content_type.name Eintrag django_content_type.name in der django_content_type.name ändern. Für postgreSQL verwenden Sie UPDATE django_content_type SET name='<newModelName>' where name='<oldModelName>' AND app_label='<OldAppName>'

Meta-Punkt (Wenn Sie virtualenv verwenden): Beachten Sie, dass wenn Sie das Verzeichnis umbenennen, das Ihr virtualenv enthält, es wahrscheinlich mehrere Dateien in Ihrem env geben wird, die einen absoluten Pfad enthalten und auch aktualisiert werden müssen. Wenn Sie Fehler wie ImportError: No module named ... das könnte der Schuldige sein. (Danke an @danyamachine für die Bereitstellung dieses).

Andere Referenzen: Sie können auch die folgenden Links für ein vollständigeres Bild beziehen

  1. Umbenennen einer App mit Django und South
  2. Wie migriere ich ein Modell aus einer Django-App in eine neue?
  3. Wie ändere ich den Namen einer Django App?
  4. Rückwärtswanderung mit Django South
  5. Einfachste Möglichkeit, ein Modell mit Django / South umzubenennen?
  6. Python-Code (Danke an A.Raouf ) um die obigen Schritte zu automatisieren (ungetesteter Code. Sie wurden gewarnt!)
  7. Python-Code (danke an rafaponieman ), um die obigen Schritte zu automatisieren (ungetesteter Code. Sie wurden gewarnt!)

Ich habe den Namen einer App in Django geändert, indem ich seinen Ordner, Importe und alle seine Referenzen (Vorlagen / Indizes) umbenannte. Aber jetzt bekomme ich diesen Fehler, wenn ich versuche, python manage.py runserver

Error: Could not import settings 'nameofmynewapp.settings' (Is it on sys.path?): No module named settings

Wie kann ich diesen Fehler beheben und beheben? Irgendwelche Hinweise?


Neu in Django 1.7 ist eine App-Registry, die Konfiguration speichert und Introspektion bietet. Mit dieser App können Sie mehrere App-Attribute ändern.

Der Hauptpunkt, den ich machen möchte, ist, dass das Umbenennen einer App nicht immer notwendig ist: Mit App-Konfiguration ist es möglich, in Konflikt stehende Apps zu lösen. Aber auch der Weg, wenn deine App eine freundliche Namensgebung benötigt.

Als ein Beispiel möchte ich meine Umfragen-App 'Feedback von Benutzern' nennen. Es geht so:

Erstellen Sie eine Datei " apps.py " im polls :

from django.apps import AppConfig

class PollsConfig(AppConfig):
    name = 'polls'
    verbose_name = "Feedback from users"

Fügen Sie den polls/__init__.py die Standard-App-Konfiguration polls/__init__.py :

default_app_config = 'polls.apps.PollsConfig'

Für weitere App-Konfiguration: https://docs.djangoproject.com/en/1.7/ref/applications/


Wenn Sie PyCharm verwenden und Projekt nach dem Umbenennen nicht mehr funktioniert:

  1. Bearbeiten Sie die Run / Debug-Konfiguration und ändern Sie die Umgebungsvariable DJANGO_SETTINGS_MODULE, da diese den Projektnamen enthält.
  2. Gehe zu Einstellungen / Sprachen & Frameworks / Django und aktualisiere den Speicherort der Einstellungsdatei.




django