如果我从模块函数(发生时的 django View 函数)发送信号,它不在类中,那么(对我来说)发送者应该是什么并不明显 - 如果有的话? sender=None
在这种情况下是否合适?
或者,该函数由 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",
)
[更新]
选项 A 有。在这种情况下,接收方对发送方没有任何用处(即它不是对象),因此请将其设置为 None。
最佳答案
django.dispatch.Dispatcher source只是说应该是
"...[t]he sender of the signal. Either a specific object or None."
然后通过 connect() 与接收者联系。 ,发件人的意义是:
"The sender to which the receiver should respond. Must either be
of type Signal, or None to receive events from any sender"
我承认,这不是特别清楚,但在你的情况下,我会说使用 sender=None
因为没有什么具体的东西可以 Hook ,因为请求是 transient 的。
关于python - 如果我从函数发送 python 'Signal' 对象, "sender"参数应该是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17043163/