2013-06-11 9 views
16

モジュール関数(Djangoビュー関数が発生した場合)からSignalを送信した場合、それはClass内ではありませんが、送信者が何をすべきかはわかりません。この場合、sender=Noneは適切ですか?関数からPythonの 'Signal'オブジェクトを送信した場合、「送信者」引数はどのようなものになりますか?

また、この関数はHTTP要求によって呼び出されます。これは、現在別の引数として渡されています。代わりに渡す必要がありますか?

オプションA:

from django.dispatch import Signal 
my_signal = Signal(
    providing_args=['my_arg', 'request'] 
)  

# this is a view function 
def do_something(request): 
    # ... do useful stuff 
    my_signal.send(
     sender=None, 
     my_arg="Hello", 
     request=request 
    ) 

オプションB:

from django.dispatch import Signal 
my_signal = Signal(
    providing_args=['my_arg'] 
)  

# this is a view function 
def do_something(request): 
    # ... do useful stuff 
    my_signal.send(
     sender=request, 
     my_arg="Hello", 
    ) 

[UPDATE]

オプションAがそれを持っています。この場合、受信者が送信者にできることは何もない(つまり、オブジェクトではない)ので、Noneに設定してください。

"The sender to which the receiver should respond. Must either be 
of type Signal, or None to receive events from any sender" 

、I:

答えて

10

django.dispatch.Dispatcher sourceは、単純に、送信者の重要性があるため、それはその後、connect()を介して受信機で結びつける

"...[t]he sender of the signal. Either a specific object or None." 

あるべきと言います特に明白なことではありませんが、あなたのケースでは、要求が一時的であるため、フックするのに具体的なものがないので、sender=Noneを使用すると言います。

+0

送信者=なしです。 –

関連する問題