La documentazione dei comandi di gestione Django mostra tutti i comandi creati in una cartella app/gestione/comandi. È possibile inserire comandi in sottocartelle, come app/gestione/comandi/installazione e app/gestione/comandi/manutenzione? Come sarebbe fatto?Django: comandi di gestione divisi in sottocartelle
risposta
Sfortunatamente, come in Django 1.4 sembra che non ci sia modo di farlo. Le fonti per django.core.management.__init__.py
hanno questo metodo:
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 []
Come si può vedere, si considera solo i file direttamente all'interno della cartella commands
, ignorando eventuali sottocartelle. Tuttavia, se si "patch scimmia" questa funzione in qualche modo, il resto del codice dovrebbe funzionare bene, dal momento che il codice che crea effettivamente l'istanza Command
è questo:
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()
Quindi, se si ha un comando chiamato subfolder.command
esso caricheresti lo script giusto e istanziato la classe giusta.
Dal punto di vista pratico, tuttavia, non vedo l'utilità di farlo. Certo, avere comandi "namespace'd" sarebbe bello, ma puoi sempre prefissare tutti i tuoi comandi con un nome se lo desideri, usando qualcos'altro come separatore (come _
). La lunghezza del nome del comando e il numero di sequenze di tasti necessari per digitarli nel terminale saranno uguali ...
- 1. Registrazione Django dei comandi di gestione personalizzati
- 2. newlines spurie aggiunto nella gestione Django comandi
- 3. Gestione di più app che annullano i comandi di gestione in Django
- 4. Gestione delle sottocartelle nella libreria multimediale
- 5. SSRS BIDS 2008 Sottocartelle Explorer soluzione come in Gestione report
- 6. comando di gestione Django e argparse
- 7. numero divisi in gruppi di uguali dimensioni
- 8. Come eseguire i comandi di gestione Django contro Google Cloud SQL
- 9. Controller divisi per aree
- 10. Guglielmo Tell Django per cercare sottocartelle modello di app
- 11. perl divisi comportamento interessante
- 12. Gestione di caratteri estesi nei comandi di Windows?
- 13. Esegui codice prima di qualsiasi comando di gestione di django
- 14. CLI PHP in Windows: gestione dei comandi Ctrl-C?
- 15. Sottocartelle in App_GlobalResources (ASP.NET)
- 16. Django - accedere alla Gestione di chiave esterna da modelli Django
- 17. Argomento del comando di gestione Django
- 18. Django Formset errore di convalida gestione-forma
- 19. I comandi Django django-extensions non sono disponibili (graph_models)
- 20. Gestione di file statici per più app in Django
- 21. Rimozione delle sottocartelle in Python
- 22. Come scrivere comandi django manage.py personalizzati in più app
- 23. Comandi di shell di escape In java?
- 24. Pannelli divisi tra Tmux e iTerm2
- 25. due div divisi con linea diagonale - CSS
- 26. Come si usa l'opzione di comando di gestione personalizzata Django?
- 27. Creare sottocartelle nel controller
- 28. SVN: Ignora sottocartelle
- 29. Sottocartelle Zip con ZipOutputStream
- 30. Comando di gestione personalizzato Django in esecuzione Scrapy: come includere le opzioni di Scrapy?
puoi fornire maggiori dettagli sul tuo problema? è quello che stai cercando? https://docs.djangoproject.com/en/dev/howto/custom-management-commands/ – Marat
Vorrei mettere i comandi in sottocartelle di app/gestione/comandi. Ho aggiunto più dettagli alla domanda. –