位置: 编程技术 - 正文

利用信号如何监控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标准模板库)

  • 小规模公司减免的增值税怎么算
  • 车船使用税新规2020
  • 工程款税率是多少专票
  • 自然人独资是小规模纳税人吗
  • 期末资产负债
  • 长期借款业务的思维导图
  • 电子发票与纸质发票具有同等效力
  • 建筑业预交税金怎么计算
  • 总公司的哪些费用要交税
  • 应收账款进行债务转让
  • 出售无形资产的会计科目
  • 一张发票多个单位报销,怎么分辨
  • 个人开增值税普票有没有限额
  • 出口贸易没有进口贸易
  • 签合同交什么照片比较好
  • 矿产资源税是多少
  • 税控系统技术维护费
  • 即征即退收入是否计入所得税
  • 纳税人备案信息包括
  • 质量成本包括哪两个成本
  • 制造费用包括劳动保护费吗
  • 收到工程款退回的账务处理
  • 滴滴打车怎么整
  • 资询服务收入算服务还是劳务
  • 美元汇款怎么汇
  • 工会经费如何计提会计分录
  • 使用linux命令
  • linux 数据类型
  • win10如何给文件夹上锁
  • 营改增会计分录
  • 羊肚菌的功效和价格
  • thinkphp query
  • 处置固定资产增值税怎么计算
  • 车辆被盗
  • 超分辨率图像复原
  • 渐进模式的特点
  • echarts简介
  • 增值税折扣发票有折扣字样
  • 支付第三方劳务费计入什么科目
  • vue项目使用less
  • 收到商业承兑汇票怎么兑现
  • 事业单位收入入账
  • mybatis拦截器执行顺序
  • 下列项目的进项税额可以从销售税额中抵扣的是
  • 年金保险是指什么保险
  • 投资性房地产累计摊销
  • 税务ukey版怎么读入发票
  • 销售分哪几类
  • 办公室搬迁工作
  • 水电费没有票怎么做账
  • 上年度没有计提企业所得税,今年怎么做分录
  • 母子公司往来款属于借款吗
  • 可转换债券发行主体
  • 一般纳税人应交增值税怎么算
  • 持有待售资产的条件
  • 利润表中财务费用中的利息费用和利息收入
  • 关于低值易耗品的评估说法正确的有()
  • 记账凭证如何填写明细科目
  • Linux下mysql 5.6.17安装图文教程详细版
  • mysql单表数据建议
  • centos怎么设置
  • office2003破解
  • 重装Windows11
  • Linux内核级别的资源隔离机制是
  • win7安装远程桌面组件
  • owmngr.exe - owmngr是什么进程 作用是什么
  • 全球知名的中文搜索引擎
  • 如何解决win7系统中鼠标键盘不能用
  • window.location.reload白屏
  • Tree、Unformat、Vsafe命令的区别与使用说明
  • unity角色系统
  • Python实现Mysql数据库连接池实例详解
  • js动态改变网页标题
  • 编写javascript代码
  • python和微信交互
  • jQuery中使用animate自定义动画的方法
  • 出口企业的增值税怎么算
  • 江苏省职工医保门诊报销比例
  • 广西教师初级职称申报时间
  • 我国国家宪法日是每年的十二月几日
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设