Django涓璖ignals鏈哄埗鎬庝箞浣跨敤
Django涓殑Signals鏈哄埗鐢ㄤ簬鍦ㄧ壒瀹氬姩浣滃彂鐢熸椂鍙戦€佷俊鍙凤紝鍏佽鍏朵粬閮ㄥ垎鐨勪唬鐮佸杩欎簺鍔ㄤ綔鍋氬嚭鍝嶅簲銆係ignals鏈哄埗鍙互鐢ㄤ簬瑙h€﹀簲鐢ㄧ▼搴忎腑鐨勪笉鍚岄儴鍒嗭紝瀹炵幇鏇寸伒娲诲拰鍙墿灞曠殑鏋舵瀯銆?/p>
瑕佷娇鐢⊿ignals鏈哄埗锛岄鍏堥渶瑕佸鍏jango.signals妯″潡锛?/p>
from django.dispatch import Signal
鐒跺悗瀹氫箟涓€涓俊鍙峰璞★細
my_signal = Signal()
鎺ヤ笅鏉ワ紝鍙互鍦ㄩ渶瑕佸彂閫佷俊鍙风殑鍦版柟鍙戦€佷俊鍙凤細
my_signal.send(sender=self, message='Hello, world!')
鍦ㄩ渶瑕佹帴鏀朵俊鍙风殑鍦版柟锛屽彲浠ュ畾涔変竴涓帴鏀朵俊鍙风殑鍑芥暟锛?/p>
def my_receiver(sender, **kwargs):
message = kwargs.get('message')
print(message)
my_signal.connect(my_receiver)
閫氳繃connect()鏂规硶锛屽皢鎺ユ敹淇″彿鐨勫嚱鏁拌繛鎺ュ埌淇″彿瀵硅薄涓娿€傚綋鍙戦€佷俊鍙锋椂锛屾帴鏀朵俊鍙风殑鍑芥暟灏嗚璋冪敤锛屽苟浼犻€抯ender鍜屽叾浠栧弬鏁般€?/p>
鍦―jango涓紝杩樻湁涓€浜涘唴缃殑淇″彿锛屽post_save銆乸re_save銆乸ost_delete绛夛紝鍙互鐢ㄤ簬鍦ㄦā鍨嬩繚瀛樸€佸垹闄ょ瓑鎿嶄綔鏃跺彂閫佷俊鍙枫€傚彲浠ラ€氳繃杩炴帴杩欎簺鍐呯疆淇″彿鏉ユ墽琛屼竴浜涚壒瀹氱殑鎿嶄綔銆?/p>
鎬荤殑鏉ヨ锛孲ignals鏈哄埗鍙互甯姪寮€鍙戜汉鍛樺疄鐜版洿鐏垫椿鍜屽彲鎵╁睍鐨勫簲鐢ㄧ▼搴忔灦鏋勶紝鎻愰珮浠g爜鐨勫彲缁存姢鎬у拰鍙噸鐢ㄦ€с€?/p>