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