位置: 编程技术 - 正文

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

  • 施工单位缴税实例
  • 税控抵减会计分录
  • 0税率发票有什么用
  • 一般纳税人留底税额抵减欠缴税额
  • 企业所得税的税率
  • 五险一金可以在手机上交吗
  • 赠送产品能直接用吗
  • 2020年个体工商户税收政策超出额度怎么征收
  • 给分公司开发票由总公司付款怎么办?
  • 有发票的福利费可以不交个税吗
  • 通用机打发票单位名称打不下怎么办
  • 现金收款能开专用发票吗
  • 个人领取住房公积金需要什么材料
  • 当月工资补扣个税吗
  • 子公司注销后人员怎么安置
  • 物物交换增值税处理
  • 怎么分配工业企业材料费用?
  • 收据可以入账的范围
  • 小规模纳税人核定征收标准
  • 冲抵备用金
  • 单位购买图书会计分录
  • 公司收到项目的现金
  • 发票专用章正规位置盖在哪里
  • 如何控制网络速度
  • php如何实现多进程
  • win11怎么更改系统日期
  • 存出保证金计入货币资金吗
  • 发票作废的政策规定
  • 申请开立临时存款账户
  • fpassist.exe是什么进程 有什么作用 fpassist进程查询
  • php yii框架
  • 支付境外培训费要交税吗
  • PHP:cal_days_in_month()的用法_日历函数
  • 厂房的设计审查要求
  • yii2框架结构
  • 计提下月工资怎么算
  • 企业销售旧固定资产税票开票
  • 固定资产有金额界定吗
  • 研发费用归集范围有哪些
  • 公司名下商品房过户给公司需要交过户费
  • 接受捐赠物品的入账价值
  • 织梦如何添加浮动广告
  • mysql客户端怎么使用
  • Mongodb中MapReduce实现数据聚合方法详解
  • 不动产进项税额抵扣新政策2021
  • 增值税是如何计算的
  • 刚成立的公司老板要我入股
  • 建筑行业每月报税
  • 申请到了专利费多少钱
  • 国税局个人所得税怎么申报
  • 房产税减免退税怎么操作
  • 先付款后开票还是先开票后付款
  • 公司支付的培训费需要交税吗
  • 营改增后的增值税税目税率表
  • 建筑企业外地预缴
  • 计提加计抵减额的会计处理
  • 汇总帐凭证处理
  • sql常用语句大全简书
  • mysql5.7.26启动失败
  • 如何开启windows防火墙
  • 怎么操作win10系统
  • bios详细解释
  • windows ftp软件
  • 怎么关闭获取手机信息
  • win7连接xp共享
  • xp系统升级成win7还会卡吗
  • win8.1技巧
  • android ui绘制
  • js拖动图片
  • python%i
  • shell脚本语句
  • jquery示例
  • nodejs cli
  • jquery添加节点
  • jQuery使用contains过滤器实现精确匹配方法详解
  • android socket聊天
  • js过滤html代码
  • django命令行
  • 航信开的电子发票怎么导出来
  • 贵州省税务网上缴费平台
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设