簡體   English   中英

Django 管理命令參數

[英]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)

參數parserargparse.ArgumentParser一個實例(參見文檔)。 現在您可以通過調用parseradd_argument 方法添加任意數量的參數。 在上面的代碼中,您需要一個int類型的參數n ,它是從optionshandle方法中獲取的。

如果要查看顯示的幫助,請運行以下命令:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM