【问题标题】:Nested management commands in DjangoDjango 中的嵌套管理命令
【发布时间】:2021-03-10 07:05:50
【问题描述】:

有没有在 Django 中创建嵌套管理命令,类似于 dockerkubectl 有什么?例如,假设我需要具有以下结构:

|-->manage.py
    |-->restaurant
        |-->list
        |-->get
    |-->employee
        |-->list
        |-->get
        |-->delete

以下命令应该都是可能的:

./manage.py -h
./manage.py restaurant -h
./manage.py restaurant list
./manage.py employee list
./manage.py restaurant get ""
./manage.py employee delete tiffany

argparse subparser 看起来很有希望,但我觉得应该有更简单的方法在 app/management/commands 或类似的地方使用 python 模块。

【问题讨论】:

    标签: python django django-manage.py django-management-command


    【解决方案1】:

    您可以为此添加一个参数。

    from django.core.management.base import BaseCommand, CommandError
    
    class Command(BaseCommand):
    
        def add_arguments(self, parser):
            parser.add_argument('command_type', type=str)
    
        def handle(self, *args, **options):
            command_type = options['command_type']
            if command_type == 'list':
                # list command
                return
            elif command_type == 'get':
                # get command
                return
            raise CommandError('Invalid arguemnt for command_type')
    

    用法:

    py manage.py my_command get
    py manage.py my_command list
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-29
      • 2012-05-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-10
      • 2012-05-13
      相关资源
      最近更新 更多