Django 自定义信号

Rya*_*axe 2 python django arguments signals

因此,在创建信号时,我们创建一个如下所示的signals.py文件:

from django.dispatch import Signal

some_signal = Signal(providing_args=["arg_1","arg_2",...,"arg_n"])
#...
Run Code Online (Sandbox Code Playgroud)

现在我的问题是,如果您要提供的论点并不总是相同的怎么办?您将如何创建具有这种灵活性的信号?

Tim*_*ony 5

如果您阅读文档:

所有信号都是 django.dispatch.Signal 实例。provider_args 是信号将提供给侦听器的参数名称的列表。然而,这纯粹是文档性的,因为没有任何东西可以检查信号是否实际向其侦听器提供了这些参数。

如果您查看该send方法的签名:

Signal.send(sender, **kwargs)

您会注意到它只需要一个参数和您想要的任意多个关键字参数,因此您可以向信号侦听器发送任意数量的内容