Die Dokumentation der Django-Verwaltungsbefehle zeigt alle Befehle an, die in einem app/management/commands-Ordner erstellt werden. Ist es möglich, Befehle in Unterordner wie app/management/commands/install und app/management/commands/maintenance zu legen? Wie würde das gemacht werden?Django: Befehle zur Aufteilung der Verwaltung in Unterordner
Antwort
Unglücklicherweise scheint es seit Django 1.4 keine Möglichkeit mehr zu geben. Die Quellen für django.core.management.__init__.py
haben diese Methode:
def find_commands(management_dir):
"""
Given a path to a management directory, returns a list of all the command
names that are available.
Returns an empty list if no commands are defined.
"""
command_dir = os.path.join(management_dir, 'commands')
try:
return [f[:-3] for f in os.listdir(command_dir)
if not f.startswith('_') and f.endswith('.py')]
except OSError:
return []
Wie Sie sehen können, es hält nur die Dateien direkt im commands
Ordner, Unterordner ignorieren. wenn Sie „Affen-Patch“ Allerdings ist diese Funktion irgendwie sollte der Rest des Codes funktionieren, da der Code, der tatsächlich schafft die Command
Beispiel ist dies:
def load_command_class(app_name, name):
"""
Given a command name and an application name, returns the Command
class instance. All errors raised by the import process
(ImportError, AttributeError) are allowed to propagate.
"""
module = import_module('%s.management.commands.%s' % (app_name, name))
return module.Command()
Also, wenn Sie einen Befehl hatte subfolder.command
es benannt würde das richtige Skript laden und die richtige Klasse instanziieren.
Vom praktischen Standpunkt sehe ich jedoch keine Verwendung davon. Sicher, "namespace'd" -Befehle zu haben, wäre nett, aber Sie können allen Ihren Befehlen immer einen Namen geben, wenn Sie wollen, und etwas anderes als Trennzeichen verwenden (zB _
). Die Länge des Befehlsnamens - und die Anzahl der Tastenanschläge, die benötigt werden, um sie in das Terminal einzugeben - ist gleich ...
- 1. Verwenden von Javascript zur Verwaltung der Navigationsleiste
- 2. Framework zur Verwaltung benutzerdefinierter Tabellen
- 3. GUI zur Verwaltung von Redis
- 4. Django: Kann benutzerdefinierte Befehle ausführen
- 5. Optimierung der Aufteilung in gcc
- 6. Korrekte Art der Thread-Verwaltung
- 7. Aufteilung der Nutzer zu Terminen
- 8. Sagen django app Vorlage Unterordner
- 9. Informationsquellen zur Verwaltung großer SQL Server-Datenbanken?
- 10. Bessere Möglichkeit zur Verwaltung der Nhibernate Relation-Tabelle
- 11. Django: Best Practice für die Aufteilung von Projekten in Apps
- 12. Django, kann keine App in Unterordner erstellen
- 13. Fehler beim Wechsel zur Client-Verwaltung
- 14. Django django-Erweiterungen Befehle nicht verfügbar (graph_models)
- 15. Django Rest Framework Datenbank-Thread-Pool-Verwaltung
- 16. Cache-Verwaltung in der Suchmaschine
- 17. Aufteilung der Array in mehrere Arrays
- 18. Bedingte Aufteilung in R
- 19. Verwaltung der Systemeigenschaften
- 20. Subdomäne und Unterordner zur Stammdomäne umleiten
- 21. Interner Auftrag erkennen/in der Verwaltung erstellt
- 22. MVC4 Routing-Unterordner Verzeichnis zur Kasse
- 23. Wie kann ich einen Unterordner zur Indexdatei in diesem Unterordner umleiten?
- 24. String Array Aufteilung in C#
- 25. Umleiten der Stammdomäne in Unterordner (mit https) und Rest der Addondomänen in Unterordner (ohne https)
- 26. Anwendungen in Unterordner in 1.7
- 27. Nachteile der J2EE-Sitzung Verwaltung in ColdFusion
- 28. Verwaltung Zeiträume in NetLogo
- 29. Splits Verwaltung in Vim
- 30. Gemeinsame Postfach-Verwaltung
Können Sie mehr Details zu Ihrem Problem angeben? Ist es das, wonach Sie suchen? https://docs.djangoproject.com/en/dev/howto/custom-management-commands/ – Marat
Ich möchte Befehle in Unterordner von app/management/befehle setzen. Ich habe der Frage mehr Details hinzugefügt. –