Django框架 信號調度原理解析
更新時間:2019年09月04日 09:42:00 作者:高~雅
這篇文章主要介紹了Django框架 信號調度原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
Django中提供了“信號調度”,用于在框架執(zhí)行操作時解耦。通俗來講,就是一些動作發(fā)生的時候,信號允許特定的發(fā)送者去提醒一些接受者。
Django內置信號
Model signals pre_init # django的modal執(zhí)行其構造方法前,自動觸發(fā) post_init # django的modal執(zhí)行其構造方法后,自動觸發(fā) pre_save # django的modal對象保存前,自動觸發(fā) post_save # django的modal對象保存后,自動觸發(fā) pre_delete # django的modal對象刪除前,自動觸發(fā) post_delete # django的modal對象刪除后,自動觸發(fā) m2m_changed # django的modal中使用m2m字段操作第三張表(add,remove,clear)前后,自動觸發(fā) class_prepared # 程序啟動時,檢測已注冊的app中modal類,對于每一個類,自動觸發(fā) Management signals pre_migrate # 執(zhí)行migrate命令前,自動觸發(fā) post_migrate # 執(zhí)行migrate命令后,自動觸發(fā) Request/response signals request_started # 請求到來前,自動觸發(fā) request_finished # 請求結束后,自動觸發(fā) got_request_exception # 請求異常后,自動觸發(fā) Test signals setting_changed # 使用test測試修改配置文件時,自動觸發(fā) template_rendered # 使用test測試渲染模板時,自動觸發(fā) Database Wrappers connection_created # 創(chuàng)建數(shù)據庫連接時,自動觸發(fā)
對于Django內置的信號,僅需注冊指定信號,當程序執(zhí)行相應操作時,自動觸發(fā)注冊函數(shù):
示例:
#在model表中添加/刪除記錄時執(zhí)行響應的方法
from django.db.models import signals
def before_save1(*args,**kwargs):
print('有車來了,我要服務了--》',args,kwargs)
def before_save2(*args,**kwargs):
print('有車來了,我要服務了--》',args,kwargs)
def after_save1(*args,**kwargs):
print('有車來了,完事了--》',args,kwargs)
signals.pre_save.connect(before_save1)
signals.pre_save.connect(before_save2)
signals.post_save.connect(after_save1)
自定義信號
定義信號
import django.dispatch pizza_done = django.dispatch.Signal(providing_args=["toppings", "size"])
注冊信號
def callback(sender, **kwargs):
print("callback")
print(sender,kwargs)
pizza_done.connect(callback)
觸發(fā)信號
from 路徑 import pizza_done pizza_done.send(sender='seven',toppings=123, size=456)
由于內置信號的觸發(fā)者已經集成到Django中,所以其會自動調用,而對于自定義信號則需要開發(fā)者在任意位置觸發(fā)。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Python使用imagehash庫生成ahash算法的示例代碼
aHash、pHash、dHash是常用的圖像相似度識別算法,本文將利用Python中的imagehash庫生成這一算法,從而實現(xiàn)計算圖片相似度,感興趣的可以了解一下2022-11-11
Python中使用實現(xiàn)輸出哈沙德數(shù)的多種方法小結
哈沙德數(shù)(Harshad?Number),又稱Niven數(shù),是指一個自然數(shù),它可以被它的各位數(shù)字之和整除,本文將探討如何使用多種不同的方法來判斷一個數(shù)字是否是哈沙德數(shù),感興趣的可以了解下2024-01-01
使用Python編寫Prometheus監(jiān)控的方法
今天小編就為大家分享一篇關于使用Python編寫Prometheus監(jiān)控的方法,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-10-10

