Django Signals 信号

Django Signals 信号

入门

# receiver 接收者
def my_callback(sender, **kwargs):
    print sender
    print kwargs
    print("Request finished!")

# 关联信号和接受者
from django.core.signals import request_finished
request_finished.connect(my_callback)

# 另一种关联方式
@receiver(request_finished)
def my_callback(sender, **kwargs):
    # **kwargs 和 sender 中的 **kwargs 对应
    pass

# 信号定义
request_finished = Signal()

# 发送信号
request_finished.send(sender=***,**kwargs)

# 断开信号
Signal.disconnect(receiver=None, sender=None, dispatch_uid=None)

connect

sender 可以是任意类型

weak receiver在signal对象中被维护成一个弱引用列表.
如果receiver是一个局部变量, 这个receiver就丢了.
如果weak是false. 可以避免这个情况.

dispatch_uid 绑定多次会出问题,此id可以避免绑定多次的情况.

# Signal.connect(receiver, sender=None, weak=True, dispatch_uid=None)
@receiver(pre_save, sender=MyModel)
def my_handler(sender, **kwargs):
    ...
'''The my_handler function will only be called when an instance of MyModel is saved'''
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章