Django команды управления повторно используют аргументы - PullRequest
0 голосов
/ 27 февраля 2020

Я хочу написать несколько команд управления в проекте Django 2.2 и Python 3.8. Все они должны иметь параметры --dry-run. Я хотел бы иметь некоторую степень повторного использования кода при их реализации. Какой рекомендуемый подход?

Вот как я это делаю прямо сейчас.

Сделать MyBaseCommand расширенным с BaseCommand:

class MyBaseCommand(BaseCommand):
    def add_arguments(self, parser):
        parser.add_argument('--dry-run', ....)

class Command(MyBaseCommmand):
    def add_arguments(self, parser):
        super(Command, self).add_arguments(parser)
        parser.add_arguent('--other-arg', ...)

Другой вариант Я подумал о том, чтобы создать один или несколько декораторов для каждого повторно используемого аргумента, например @dry-run, @yaml-output, @json-output et c. Затем украсьте метод add_arguments в каждом дочернем классе. Таким образом, у меня больше контроля над тем, какая команда управления получает какую повторно используемую аргумент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...