位置: 编程技术 - 正文

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

  • 税务局退回个税手续费会计分录
  • 土地价款抵扣增值税
  • 总公司和子公司可以有业务往来吗
  • 税务不受地方管吗
  • 公司账户美金入账
  • 淘宝发票收取的税点是谁来交
  • 无追索权保理占用谁的额度
  • 招标文件费属于哪类税收编码
  • 中小企业增值税税率
  • 公司厨房用品专用发票怎么处理?
  • 金蝶软件如何设置单价小数点
  • 土地款印花税计入无形资产吗
  • 年薪12万个人所得税交多少钱
  • 计提增值税电费怎么算
  • 药用植物所
  • 滞纳金账务处理
  • 跨区域预缴企业所得税
  • 增值税发票每个月什么时候可以开
  • 一般纳税人附加税费减免政策
  • 应收及预付款项包括( )
  • 收到银行存款利息记账凭证怎么写
  • 会计估计变更的会计处理方法
  • 上月发生的费用本月报销记账
  • mac屏蔽显卡教程
  • 物流运输公司要交税吗
  • 公司为实习生买保险列支什么科目?
  • 退货 会计
  • 确认应付职工薪酬是借方还是贷方
  • 财务管理是如何工作的
  • 企业会计日记账保管期限为()年。A5B10C30D35
  • codeigniter 教程
  • thinkphp6依赖注入
  • laravel创建项目
  • 企业职工福利费包括哪些内容
  • phpqrcode
  • Web渗透测试新手实操详解
  • 收到待报解预算收入怎么做账
  • 图书发票怎么报销的
  • Element UI - v-infinite-scroll无限滚动组件
  • 分布式网络爬虫
  • php gdb
  • /f命令
  • 期末汇兑损益计算公式
  • 支付给境外个人的服务费
  • 购买固定资产的运费计入什么科目
  • 非流动资产基金属于什么科目
  • 公司有残疾人如何申报残保金
  • 企业所得税和个人所得税怎么算
  • 会计年度对账
  • 累计折旧需要分录吗
  • 研发费用摊销方法
  • 无形资产账面价值计算公式
  • 地方水利建设基金减免政策2023
  • 收到银行手续费发票怎么入账
  • 处理报废的固定资产账务处理
  • 哪些发票可以抵扣增值税专用发票
  • 对于事业单位无力支付的银行承兑汇票
  • 累计摊销可以做什么分录
  • 核定征收的小微企业
  • 酒店会计做账流程视频
  • mysql5.7分区表
  • win10硬盘安装器安装教程
  • win8驱动在哪个文件夹
  • 系统升级中怎么办
  • xp系统怎么添加我的电脑到桌面
  • 一台电脑多个用户组怎么显示在一个屏幕上
  • WIN7系统共享文件夹 您没有权限访问
  • win8设置关机键
  • linux关机后机器还亮着
  • linux系统添加新用户
  • 微信 cookies
  • bootstrap2
  • windows下载安装
  • nodejs如何配置环境变量
  • me分析方法
  • 用jquery
  • jquery图片上传
  • 现在买新车都需要交什么费用
  • 请问在哪里可以看到
  • 如何查北京
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设