Dokumentacja poleceń zarządzania Django pokazuje wszystkie polecenia tworzone w folderze app/management/commands. Czy można umieścić polecenia w podfolderach, takich jak app/management/commands/install i app/management/commands/maintenance? Jak to się stało?Django: podziel polecenia zarządzania na podfoldery
Odpowiedz
Niestety, jak Django 1.4 wydaje się, że nie ma sposobu, aby to zrobić. Źródłami django.core.management.__init__.py
mieć tą metodą:
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 []
Jak widać, to tylko uzna plików bezpośrednio w folderze commands
, ignorując wszelkie podfoldery. Jednakże, jeśli „plaster małpa” funkcja ta jakoś, reszta kodu powinny działać prawidłowo, ponieważ kod, który faktycznie tworzy instancję Command
to:
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()
Tak więc, jeśli miał polecenie o nazwie subfolder.command
go ładowałby odpowiedni skrypt i tworzył odpowiednią klasę.
Z praktycznego punktu widzenia nie widzę sensu tego robić. Oczywiście, polecenie "namespace" byłoby miłe, ale zawsze możesz poprzedzić wszystkie swoje polecenia jakąś nazwą, jeśli chcesz, używając czegoś innego jako separatora (takiego jak _
). Długość nazwy polecenia - oraz liczba naciśnięć klawiszy potrzebnych do wpisania ich w terminalu - będą takie same ...
- 1. Debugowanie niestandardowego polecenia zarządzania django
- 2. Jak uruchomić polecenia zarządzania Django przeciwko Google Cloud SQL
- 3. Jak profilować niestandardowe polecenie zarządzania Django wyłącznie
- 4. Uruchom kod przed dowolnym poleceniem zarządzania django.
- 5. Rejestrowanie niestandardowych poleceń zarządzania Django
- 6. Podziel HTML na strony, podziel długie akapity
- 7. Iteracja poprzez podfoldery rejestru
- 8. Podziel listę na części
- 9. Podziel ciąg na tablicę
- 10. Django: przekazywanie pojedynczych ustawień do zarządzania .py
- 11. wyświetl podfoldery w folderze - Matlab (tylko podfoldery, nie pliki)
- 12. Podfoldery w App_GlobalResources (ASP.NET)
- 13. asp.net mvc - podfoldery
- 14. Zwalnianie folderu zawierającego podfoldery
- 15. Nie znaleziono niestandardowego polecenia django
- 16. Podziel ciąg na podstawie wyrażenia regularnego
- 17. Podziel ciąg na dwie części
- 18. Podziel seeds.rb na wiele sekcji?
- 19. Podziel okres na wiele okresów
- 20. Podziel ciąg na tablicę ciągów
- 21. Podziel ciąg na zmianę charakteru
- 22. Podziel xtable ouput na podtablice
- 23. Podziel pojemnik na porcje, C++
- 24. Jak znaleźć wszystkie podfoldery folderu?
- 25. Wyrażenia regularne JavaScript i podfoldery
- 26. Lokalizacja daty Django wydaje się nie działać po uruchomieniu z polecenia zarządzającego w wierszu polecenia:
- 27. Narzędzie do zarządzania migracją NHibernate, takie jak EntityFramework, Django-South
- 28. Uruchom komendę zarządzania Python/Django z UnitTest/WebTest
- 29. Czy jest możliwe utworzenie akapitów w komendzie zarządzania django?
- 30. Wykonywanie polecenia powłoki Django z wiersza poleceń
Czy możesz podać więcej szczegółów na temat swojego problemu? czy tego szukasz? https://docs.djangoproject.com/en/dev/howto/custom-management-commands/ – Marat
Chciałbym umieścić polecenia w podfolderach aplikacji/zarządzania/poleceń. Dodałem więcej szczegółów do pytania. –