Каково реальное использование каталога management/commands в приложении Django?
В документации написано, что его можно использовать для написания пользовательских команд Django-admin. Но мой вопрос в том, зачем нам писать пользовательские команды администратора Django? Приведенный пример в официальной документации кажется мне немного сухим. Я был бы очень благодарен, если бы кто-нибудь привел реальные примеры, из которых я мог бы связать его использование в реальной жизни.
Django doc on management/commands:https://docs.djangoproject.com/en/2.2/howto/custom-management-commands/
Я в основном использую его из Cron / Scheduled Tasks...
Некоторыми потенциальными примерами могут быть:
- Отправка отчетов/электронных писем
- Запуск скриптов для обновления+синхронизации некоторых значений
- Обновление кэша
- Любое крупное обновление значений - сохраните его в команду для запуска на Prod Env
- Я делаю ее + тестирую локально, но потом не хочу копировать+вставлять ее в терминал SSH, потому что она иногда становится беспорядочной при вставке.
У меня также есть команда управления dothing
, которая устанавливает весь проект... запускает миграции, собирает статику, импортирует db, создает тестовых пользователей, создает необходимые структуры папок и т.д.
У меня также есть пара команд, которые я использую, но которые я не сделал в Views... Маленькие инструменты, помогающие мне проверять и очищать данные, выплевывающие их представление
Django запланированные операции и генерация отчетов из cron - очевидный вариант.
Другой способ я использую для загрузки данных в БД из файлов csv. В среде команд управления легко обрабатывать плохие строки. Я записываю исходную строку csv в файл исключений (с добавлением столбца с описанием ошибки), а затем могу просмотреть его и решить, что делать с этими строками. Иногда это просто тривиальная правка и повторная передача через команду управления. То же самое можно сделать и через представление, но это дополнительная работа для IMO без пользы.