2012-04-20 12 views
2

私はこのようなコマンドを実行したいが、関数handle (self,*args,**options)は入れ子関数を実行していないようだ。django管理コマンドを作成する

どのように私の機能をhandle()に含めることができますか?

from django.core.management.base import NoArgsCommand 

class Command(NoArgsCommand): 
    def handle(self, *args, **options): 
     def hello(): 
      print "hello1" 
     def hello1(): 
      print "hello2" 
+2

をあなたは '呼び出し' しなければなりませんそれらを実行するための定義の後の関数:hello(); hello1() – Don

答えて

3

あなたはまた、 'オンザフライ' の機能を定義することができます。

class Command(NoArgsCommand): 
    def handle_noargs(self): 
     def hello(): 
      print "hello1" 

     def hello1(): 
      print "hello2" 

     hello() 
     hello1() 

またはコマンド外(彼らは 'サービス' の機能を場合など):

def hello(): 
    print "hello1" 

def hello1(): 
    print "hello2" 


class Command(NoArgsCommand): 

    def handle_noargs(self): 
     hello() 
     hello1() 
+0

:ありがとうございました。それは本当に助けになりました....もう1つの疑問....私はコマンドラインから引数を取る関数を呼びたい場合は、どうすればいいのですか?私はクラスCommandまたは他のクラスを使用する必要がありますか? –

+0

はい、BaseCommandを拡張し、 'handle'メソッドを使用する必要があります。 "* args"または "option_list"の2つの方法については、こちらを参照してください(https://docs.djangoproject.com/en/dev/howto/custom-management-commands) – Don

関連する問題