读过Django基础(31): 如何理解和正确使用Django信号(Signals)的同学相信都应该已经学会如何使用Django内置信号比如pre_save, post_save实现不同应用程序的解耦。比如当模型A有变动时,模型B与模型C收到A发出的信号后同步更新。又或当一个数据表数据有所改变时,监听这个信号的函数可以及时清除已失效的缓存。
Django的内置信号在大多数情况下能满足我们的项目需求,但有时我们还需要使用自定义的信号。在Django项目中使用自定义信号也比较简单,分三步即可完成。
第一步:自定义信号
每个自定义的信号,都是Signal类的实例。我们首先在app目录下新建signals.py, 专门用于存放信号。这里我们定义了一个名为my_signal
的信号,它包含有msg
这个参数,这个参数在信号触发的时候需要传递。当监听函数收到这个信号时,还会同时得到