.send()如何找到连接的接收器? Django的

时间:2018-02-12 15:38:06

标签: python django signals

我一直在学习信号,现在我正在尝试理解信号发送和接收的基本内部机制。这篇文章涉及提供的信号对象(pre_save,post_save等),而不是编写自定义信号对象。

在Django代码中查看模型类,在导入的信号' pre_save'上调用.send()。在Signal类(在dispatcher.py中找到)中阅读.send()时,有一条评论说:

  

''发送信号从发件人发送到所有连接的接收器。''

.send()究竟如何找到连接的接收器?我已经读过.connect()确保信号通过信号调度器连接到接收器,信号调度器是Signal类的实例。

一个基本的解释是,在Signal类中找到的connect-method将给定的接收者名称作为参数 - 并将其附加到指定的列表“self.receivers”' ?然后检查该列表以查找.send()方法中可能的接收器?因为这是我通过阅读代码看来的方式。

看来,如果我的初学者眼睛能够正确读取所有内容,那么如果没有找到接收者,则.send()方法会返回一个空列表。这是真的?那么为什么我一直在网上随处阅读“#”信号总是被发出'事实上,他们似乎并不是?也许这只是语义,如果返回一个空列表真的发出信号......?

有人可以帮我点点滴滴吗?我的基本术语是否正确理解?

谢谢!

0 个答案:

没有答案