django 管理命令中 default=False 的用途是什么

What is the purpose of default=False in django management command

我正在尝试在 Django 中编写管理命令。根据 documentation 默认设置为 False。我假设默认值是正在传递的参数的默认值。

声明deafult=False

有什么好处
class Command(BaseCommand):
    help = "helps in doing stuff"

    def add_arguments(self, parser):
        parser.add_argument(
            'name', type=str, default=False,
            help="The name of the folder to be created")

    def handle(self, *args, **options):
        pass

default 的值是参数未传递到命令时将设置的值。

在您的情况下,如果您调用命令但未通过 CLI 提供 name,则 options['name'] 将设置为 False(您的 default值)。

您 link 的文档中的 first example 用于可选的命名参数 --delete。设置 action='store_true' 意味着如果你在命令中包含 --delete,那么 args.delete 将被设置为 True,如果 --delete 不包含在命令中则它将 default=False.

在这种情况下,实际上不需要设置 default=False,因为那是 action='store_true' 的行为。显式设置 default=False 的优点是行为很清楚,无需查找 argparse 文档。

    parser.add_argument(
        '--delete',
        action='store_true',
        dest='delete',
        default=False,
        help='Delete poll instead of closing it',
    )

您的示例没有意义,因为 name 不是可选参数。

parser.add_argument(
    'name', type=str, default=False,
    help="The name of the folder to be created")

如果你尝试这个例子,你会得到类似 too few arguments.

的错误
parser.add_argument(
    'name', type=str, default=False
    help="The name of the folder to be created")

如果您希望 name 参数是可选的,您需要设置 nargs='?'。在这种情况下,将使用您的默认设置。如果你没有设置它,那么它将默认为 None

parser.add_argument(
    'name', type=str, nargs='?', default=False,
    help="The name of the folder to be created")

请注意,如果您的参数是 'name of the folder to be created',则将默认值设置为 False 可能没有意义。似乎要么需要参数(在这种情况下不需要默认值),要么默认值应该是一个字符串,例如/path/to/folder/.