位置: 编程技术 - 正文

利用信号如何监控Django模型对象字段值的变化详解(信号监控设备是什么)

编辑:rootadmin

推荐整理分享利用信号如何监控Django模型对象字段值的变化详解(信号监控设备是什么),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:通过信号,利用信号如何监控手机,信号监听,信号监视器,利用信号如何监控手机,利用信号如何监控手机,利用信号如何监测电压,利用信号如何监测电压,内容如对您有帮助,希望把文章链接给更多的朋友!

django信号系统

django自带一套信号发射系统来帮助我们在框架的不同位置传递信息.也就是说,当某一事件发生时,信号系统可以允许一个或多个发送者(senders)将通知或信号(signals)推送给一组接受者(receivers).信号系统在我们多处代码与同一个事件相关是特别有用.

既然是信号系统,那么必须包含以下要素:

 1. 发送者-谁发送了信号

 2. 信号-发送的信号本身

 3. 接收者-信号是发给谁的

Django 信号 (Signals) 的功能类似于 WordPress 的动作 (action),用于为项目全局增加事件的广播 (dispatch) 与接收 (receive) 机制。其中,灵活使用其内置的模型信号 (Model Signals) 的接收功能就可以监控大部分模型对象 (Model instances) 的变化。因为不需要修改模型本身的代码,在进行跨应用 (App) 监控时有低耦合的优势。

基本用法

利用信号如何监控Django模型对象字段值的变化详解(信号监控设备是什么)

信号的基本用法官方文档上的 主题 与 参考 上已经有详细描述。本文只提几个要点(本文环境:Django 1.8 & Python 3.4):

代码组织

官方推荐在应用目录下新增一个 signals.py 文件,同时参考官方文档的 应用配置 节中自定义应用配置 (AppConfig) ,重载应用配置类的 run 方法,在该方法内调用 from . import signals

接收信号

推荐使用 django.dispatch.receiver 这个装饰器进行信号的接收:

从代码可读性的角度来讲,建议一个接收函数只做一件事。

监控特定字段 (field) 值的变化

从上一段代码可以知道,通过接收模型 post_save 信号,可以得知发生了保存模型对象的操作,并且还可以区分出是创建了模型对象还是更新了模型对象。然而,模型信号并没有提供针对特定字段值变化的广播功能,虽然该信号提供了 update_fields 参数,但是并不能证明在该参数中的字段名的字段值一定发生了变化,所以我们要采用一个结合 post_init 信号的变通方法。

举一个例子:当学生名字发生改变之后发布一条公告。

简单的说就是在该模型广播 post_init 信号的时候,在模型对象中缓存当前的字段值;在模型广播 post_save (或 pre_save )的时候,比较该模型对象的当前的字段值与缓存的字段值,如果不相同则认为该字段值发生了变化。

总结

标签: 信号监控设备是什么

本文链接地址:https://www.jiuchutong.com/biancheng/375450.html 转载请保留说明!

上一篇:深入理解Python中range和xrange的区别(浅谈python)

下一篇:Python标准模块--ContextManager上下文管理器的具体用法(python标准模板库)

  • 资产负债率高说明偿债能力怎么样
  • 其他权益工具投资科目编码
  • 差额纳税是什么税
  • 员工自己全额承担社保可以在个税申报吗
  • 哪些商业保险可以扣除个人所得税
  • 成立日期是注册日期吗
  • 营业外收入期末结转
  • 劳务派遣个人所得税
  • 费用跨年入账所得怎么算
  • 购置税交了发票能作废吗
  • 建安企业工资占比标准
  • 一般纳税人简易征收3%
  • 个人可以代公司缴税吗
  • 农产品加工所得税
  • 广告公司进项税有哪些
  • win7系统怎么进
  • 什么是商务接待与拜访
  • 种植业土地租赁计入哪个科目
  • 鸿蒙实用工具在哪里
  • 国税的个税手续怎么办理
  • 长期股权投资转出账务处理
  • executor进程
  • 如何修复win11系统
  • wifi出现感叹号上不了网怎么办
  • 固定资产未提完折旧停止经营怎么处理
  • 物业费可以分期付款吗
  • 工商年报的社保缴费基数怎么算
  • 代订机票发票可以入账吗
  • 发票多久过期不能开
  • 科目余额表和资产负债表的金额不一致的原因
  • vue怎么用bootstrap
  • nvm切换node版本后node -v报错
  • 企业多久报一次工伤保险
  • 企业销售旧固定产品
  • 开具劳务发票需要提供什么资料?
  • 会计要考哪些证书,难度如何
  • etcd4
  • 什么科目需要结转到本年利润
  • 发票上密码区数字什么意思
  • 金税盘的服务费
  • 发票可以去做原始凭证吗
  • sql server新增数据
  • 出口退税指的是什么意思
  • 餐厅吃饭不小心把餐具打破需要赔吗?
  • 金税盘锁死341101
  • 年金现值的含义
  • 高速公路过路费怎么算的
  • 收到的发票未抵税怎么办
  • 成本费用会计分录
  • 对公付货款没有收到发票如何处理
  • 刚开业的健身房
  • 总公司调拨子公司怎么办
  • 要约收购的条件和程序具体包括哪些?
  • 本年利润的计算
  • 管理费怎么扣除
  • win10预览版和正式版区别
  • windows vista pe
  • ubuntu software database is broken错误该怎么解决?
  • ubuntu20.04软件安装
  • linux系统中的一切都归结为
  • 双硬盘无法进入bios
  • 更换主板也不用换硅脂吗
  • win10一年更新一次
  • 微软官方解决升级问题
  • win10预览版桌面图标和任务栏不翼而飞怎么办?
  • linux 有哪些
  • linux userdel
  • javaScript事件机制兼容【详细整理】
  • android常用命令
  • angular script
  • 模拟新浪微博用户注册程序设计
  • 命令行执行bat文件
  • 简述python的垃圾回收机制
  • 法线贴图使用
  • 技术进出口指什么技术
  • 如何做好基层税务分局长工作
  • 缴纳了车辆购置税能退吗
  • 江苏省国税局客服电话
  • 安徽省税务局发票真伪查询平台
  • 开票盘是什么意思
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设