acq*_*ank 2 python django django-management-command
我正在尝试在 Django 中编写管理命令。根据文档默认设置为 False。我会假设默认值是正在传递的参数的默认值。 使 django 自定义管理命令参数“不需要”
这么说有什么好处 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
Run Code Online (Sandbox Code Playgroud)
您链接到的文档中的第一个示例是可选的命名参数--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',
)
Run Code Online (Sandbox Code Playgroud)
您的示例没有意义,因为name它不是可选参数。
parser.add_argument(
'name', type=str, default=False,
help="The name of the folder to be created")
Run Code Online (Sandbox Code Playgroud)
如果您尝试此示例,则会收到类似too few arguments.
parser.add_argument(
'name', type=str, default=False
help="The name of the folder to be created")
Run Code Online (Sandbox Code Playgroud)
您需要设置nargs='?'是否希望他的name参数是可选的。在这种情况下,将使用您的默认值。如果你没有设置它,那么它会默认为None
parser.add_argument(
'name', type=str, nargs='?', default=False,
help="The name of the folder to be created")
Run Code Online (Sandbox Code Playgroud)
请注意,如果您的参数是“要创建的文件夹的名称”,则将默认值设置为False. 似乎应该需要参数(在这种情况下不需要默认值)或默认值应该是一个字符串,例如/path/to/folder/.
| 归档时间: |
|
| 查看次数: |
2250 次 |
| 最近记录: |