Django框架 信号调度原理解析


Posted in Python onSeptember 04, 2019

Django中提供了“信号调度”,用于在框架执行操作时解耦。通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者。

Django内置信号

Model signals
  pre_init          # django的modal执行其构造方法前,自动触发
  post_init          # django的modal执行其构造方法后,自动触发
  pre_save          # django的modal对象保存前,自动触发
  post_save          # django的modal对象保存后,自动触发
  pre_delete         # django的modal对象删除前,自动触发
  post_delete         # django的modal对象删除后,自动触发
  m2m_changed         # django的modal中使用m2m字段操作第三张表(add,remove,clear)前后,自动触发
  class_prepared       # 程序启动时,检测已注册的app中modal类,对于每一个类,自动触发
Management signals
  pre_migrate         # 执行migrate命令前,自动触发
  post_migrate        # 执行migrate命令后,自动触发
Request/response signals
  request_started       # 请求到来前,自动触发
  request_finished      # 请求结束后,自动触发
  got_request_exception    # 请求异常后,自动触发
Test signals
  setting_changed       # 使用test测试修改配置文件时,自动触发
  template_rendered      # 使用test测试渲染模板时,自动触发
Database Wrappers
  connection_created     # 创建数据库连接时,自动触发

对于Django内置的信号,仅需注册指定信号,当程序执行相应操作时,自动触发注册函数:

示例:

#在model表中添加/删除记录时执行响应的方法
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) 

触发信号

from 路径 import pizza_done
pizza_done.send(sender='seven',toppings=123, size=456)

由于内置信号的触发者已经集成到Django中,所以其会自动调用,而对于自定义信号则需要开发者在任意位置触发。 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python使用matplotlib绘制正弦和余弦曲线的方法示例
Jan 06 Python
python批量修改图片大小的方法
Jul 24 Python
浅析python的优势和不足之处
Nov 20 Python
在Pycharm中执行scrapy命令的方法
Jan 16 Python
python中的subprocess.Popen()使用详解
Dec 25 Python
对tensorflow中的strides参数使用详解
Jan 04 Python
python opencv如何实现图片绘制
Jan 19 Python
python如何提取英语pdf内容并翻译
Mar 03 Python
Python新手学习标准库模块命名
May 29 Python
Python Map 函数的使用
Aug 28 Python
python subprocess pipe 实时输出日志的操作
Dec 05 Python
教你漂亮打印Pandas DataFrames和Series
May 29 Python
Django Admin中增加导出Excel功能过程解析
Sep 04 #Python
Django Admin中增加导出CSV功能过程解析
Sep 04 #Python
Python 自动登录淘宝并保存登录信息的方法
Sep 04 #Python
通过Python编写一个简单登录功能过程解析
Sep 04 #Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
Sep 04 #Python
python3实现微型的web服务器
Sep 03 #Python
Python面向对象之Web静态服务器
Sep 03 #Python
You might like
PHP中空字符串介绍0、null、empty和false之间的关系
2012/09/25 PHP
[原创]php获取数组中键值最大数组项的索引值
2015/03/17 PHP
摘自织梦CMS的HTTP文件下载类
2015/08/08 PHP
基于PHP实现简单的随机抽奖小程序
2016/01/05 PHP
PHP中的密码加密的解决方案总结
2016/10/26 PHP
ajax调用返回php接口返回json数据的方法(必看篇)
2017/05/05 PHP
php实现socket推送技术的示例
2017/12/20 PHP
在JavaScript中实现命名空间
2006/11/23 Javascript
js静态方法与实例方法分析
2011/07/04 Javascript
javascript测试题练习代码
2012/10/10 Javascript
javascript跨域的4种方法和原理详解
2014/04/08 Javascript
JQuery实现表格动态增加行并对新行添加事件
2014/07/30 Javascript
jquery实现滑屏大图定时收缩为小banner图片的广告代码
2015/09/02 Javascript
快速实现jQuery多级菜单效果
2017/02/01 Javascript
JS基于正则截取替换特定字符之间字符串操作示例
2017/02/03 Javascript
Vue项目数据动态过滤实践及实现思路
2018/09/11 Javascript
vue + axios get下载文件功能
2019/09/25 Javascript
浅谈VUE中演示v-for为什么要加key
2020/01/16 Javascript
通过Kettle自定义jar包供javascript使用
2020/01/29 Javascript
es6 super关键字的理解与应用实例分析
2020/02/15 Javascript
javascript实现计算器功能
2020/03/30 Javascript
浅谈vue 多个变量同时赋相同值互相影响
2020/08/05 Javascript
解决vant title-active-color与title-inactive-color不生效问题
2020/11/03 Javascript
Python库urllib与urllib2主要区别分析
2014/07/13 Python
Python中字典的基本知识初步介绍
2015/05/21 Python
Python数据结构与算法之常见的分配排序法示例【桶排序与基数排序】
2017/12/15 Python
python 遍历pd.Series的index和value
2019/11/26 Python
python 比较2张图片的相似度的方法示例
2019/12/18 Python
tensorflow ckpt模型和pb模型获取节点名称,及ckpt转pb模型实例
2020/01/21 Python
opencv python图像梯度实例详解
2020/02/04 Python
在Python 的线程中运行协程的方法
2020/02/24 Python
Python IDE环境之 新版Pycharm安装详细教程
2020/03/05 Python
Python使用OpenPyXL处理Excel表格
2020/07/02 Python
荣耀商城:HIHONOR
2020/11/03 全球购物
房地产开发项目建议书
2014/05/16 职场文书
党员干部学习十八届五中全会精神心得体会
2016/01/05 职场文书