[英]Django Management Command Argument
我需要將整數參數傳遞給 Django 中的基本命令。 例如,如果我的代碼是:
from django.core.management import BaseCommand
class Command(BaseCommand):
def handle(self, *args, **options, number_argument):
square = number_argument ** 2
print(square)
我想跑:
python manage.py square_command 4
所以,它將返回 16。
有沒有辦法可以通過終端將參數傳遞給我想運行的命令?
將此方法添加到您的 Command 類:
def add_arguments(self, parser):
parser.add_argument('my_int_argument', type=int)
然后您可以在代碼中使用您的選項,如下所示:
def handle(self, *args, **options):
my_int_argument = options['my_int_argument']
這樣做的好處是自動為manage.py my_command --help
生成help
輸出
是的。 此處描述了這樣做的機制,但基本上,您可以從args[0]
獲取參數。
通過實現add_arguments
方法,這非常簡單。 然后,您可以在handle
方法中獲取此參數的值,如下所示:
class Command(BaseCommand):
help = 'Help for command'
def add_arguments(self, parser):
parser.add_argument('n', type=int, help='help for n')
def handle(self, *args, **options):
n = options['n']
square = n ** 2
print(square)
參數parser
是argparse.ArgumentParser
一個實例(參見文檔)。 現在您可以通過調用parser
的add_argument
方法添加任意數量的參數。 在上面的代碼中,您需要一個int
類型的參數n
,它是從options
的handle
方法中獲取的。
如果要查看顯示的幫助,請運行以下命令:
python manage.py square_command --help
這將產生類似於以下的輸出:
usage: manage.py create_documents [-h] [--version] [-v {0,1,2,3}] [--settings SETTINGS] [--pythonpath PYTHONPATH] [--traceback] [--no-color] [--force-color]
[--skip-checks]
n
Help for command
positional arguments:
n help for n
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.