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/
.
我正在尝试在 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/
.