2017-06-22 3 views
2

私はDjangoでカスタム管理コマンドを書くことを学んでいます。私はパラメータとして与えられたURLを取るコマンドを書きたいと思います。次のようなものがあります。URLをパラメータとするカスタム管理コマンドをDjangoに書き込むにはどうすればよいですか?

python manage.py command http://example.com 

私はドキュメントを読んだことがありますが、これを行う方法がわかりません。 「!Hello Worldの」を しかし、私は言ってコマンドを書くことができます;)

答えて

4

これを試してみてください。

は、次の内容のyourapp/management/commands/yourcommand.pyの下にファイルを作成します。

from django.core.management.base import BaseCommand 

class Command(BaseCommand): 
    help = 'A description of your command' 

    def add_arguments(self, parser): 
     parser.add_argument(
      '--url', dest='url', required=True, 
      help='the url to process', 
     ) 

    def handle(self, *args, **options): 
     url = options['url'] 
     # process the url 

その後、あなたとあなたのコマンドを呼び出すことができます

python manage.py yourcommand --url http://example.com 

と、次のいずれか

python manage.py --help 

または

python manage.py yourcommand --help 

はあなたのコマンドと引数の説明が表示されます。

あなたの例では、単にURL(さん)を読むようにあなたは、引数(--url一部を)名前を付けたくない場合は、フォームargs

def handle(self, *args, **kwargs): 
    for url in args: 
     # process the url 

は、このことができます願っています。

+0

良い例。しかし、質問は1つのURLだけを扱う。だから、add_argumentの前に ' - 'を置いてください。それは魔法のように動作します(よく、[argparse](https://docs.python.org/3/library/argparse.html#name-or-flags) )。 – Melvyn

+0

ありがとう!これは多くの助けになります!しかし、私は最後の部分(--urlなし) - 後ろにあるべきものを理解していません:argsのURLの場合: –

+0

@AlekSZ、それはあなた次第です。引数として与えられたURLを処理します。 –

関連する問題