参考:https://www.cnblogs.com/wupeiqi/articles/5246483.html

一、信号:就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者

           如:在执行sql语句前或后,记录一条日志

二、用法

1、位置

2、导入模块

from django.db.models import signals

3、自定义函数

def before_create(*args, **kwargs):
print('创建用户前', args, kwargs)
# 创建用户前 () {'signal': <django.db.models.signals.ModelSignal object at 0x0000014CB5D41550>,
# 'sender': <class 'app01.models.User'>, 'instance': <User: tom>, 'raw': False, 'using': 'default',
# 'update_fields': None} def after_create(*args, **kwargs):
print('创建用户后', args, kwargs)
# 创建用户后 () {'signal': <django.db.models.signals.ModelSignal object at 0x0000014CB5D41630>,
# 'sender': <class 'app01.models.User'>, 'instance': <User: tom>, 'created': True,
# 'update_fields': None, 'raw': False, 'using': 'default'}

4、注册

signals.pre_save.connect(before_create)
signals.post_save.connect(after_create)

三、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 # 创建数据库连接时,自动触发

最新文章

  1. iOS中真机连接电脑运行程序出现问题
  2. 25 BasicUsageEnvironment0基本使用环境基类——Live555源码阅读(三)UsageEnvironment
  3. typeof操作符在javascript中运用时时页面上的操作数显示
  4. 采用SHELL,通过SQL LOAD导入一定格式的txt文件至数据库中
  5. 牛场围栏(vijos 1054)
  6. (C学习基础)一,CMD的使用
  7. RIDE常用快捷键
  8. 数据系统的未来------《Designing Data-Intensive Applications》读书笔记17
  9. Java基础3:深入理解String及包装类
  10. Linux学习笔记(一)----Ubuntu下的apt命令
  11. 实验9-1 编写一个存储过程proc_test_func
  12. Java基础IO流(四)序列化与反序列化
  13. springboot源码解读
  14. 虚拟机窗口太小_设置分辨率(win8/win7)
  15. centos常用命令--备份
  16. Vim操作指南
  17. 洛谷P2661 信息传递 [NOIP2015] 并查集/乱搞 (待补充!
  18. C++编写DLL动态链接库的步骤与实现方法
  19. OC 中new与alloc/init的差别
  20. dnn ubuntu 问题

热门文章

  1. H3C 根据主机地址数划分子网
  2. POJ 3311 Hie with the Pie 兼 Codevs 2800 送外卖(动态规划-&gt;TSP问题)
  3. 测试驱动开发实践—从testList开始
  4. C# 已知点和向量,求距离的点
  5. 基于koa2操作mysql封装例子
  6. git常用常用操作指令
  7. IDEA比较实用的插件之翻译插件(Translation)
  8. Android CTS中neverallow规则生成过程
  9. java 使用 apoi 更新 ppt 中图表的数据
  10. 王雅超的学习笔记-大数据hadoop集群部署(十)