1. 如果往数据库中增加数据的时候,希望生成一个日志。在数据保存之前以及保存之后。

Django中提供了“信号调度”,用于在框架执行操作时解耦。通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者。

1、Django内置信号

Model signalspre_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 signalspre_migrate                 # 执行migrate命令前,自动触发post_migrate                # 执行migrate命令后,自动触发Request/response signalsrequest_started             # 请求到来前,自动触发request_finished            # 请求结束后,自动触发got_request_exception       # 请求异常后,自动触发Test signalssetting_changed             # 使用test测试修改配置文件时,自动触发template_rendered           # 使用test测试渲染模板时,自动触发Database Wrappersconnection_created          # 创建数据库连接时,自动触发

对于Django内置的信号,仅需注册指定信号,当程序执行相应操作时,自动触发注册函数:

from django.core.signals import request_finishedfrom django.core.signals import request_startedfrom django.core.signals import got_request_exceptionfrom django.db.models.signals import class_preparedfrom django.db.models.signals import pre_init, post_initfrom django.db.models.signals import pre_save, post_savefrom django.db.models.signals import pre_delete, post_deletefrom django.db.models.signals import m2m_changedfrom django.db.models.signals import pre_migrate, post_migratefrom django.test.signals import setting_changedfrom django.test.signals import template_renderedfrom django.db.backends.signals import connection_createddef callback(sender, **kwargs):print("xxoo_callback")print(sender,kwargs)xxoo.connect(callback)  #在XXOO信号中注册一个callback函数# xxoo指上述导入的内容

2. 仅仅注册了函数还不够,此时别人还不知道它的存在。得先把信号注册到Django里面,运行的时候才能生效。

在__init__.py中导入 sg,  这样程序一运行的时候,就会自动把sg.py加载到内存中。

写URL,运行看结果:

运行结果:

3. Django里面还支持自定义信号

1创建信号;2主动触发信号(send);3在信号里面注册函数。

自定义信号实例:

1)创建信号,注册函数到信号里面。

2) 触发信号

转载于:https://www.cnblogs.com/momo8238/p/7724751.html

Day22-Django之信号相关推荐

  1. Django的信号机制详解

    Django的信号机制详解 Django提供一种信号机制.其实就是观察者模式,又叫发布-订阅(Publish/Subscribe) .当发生一些动作的时候,发出信号,然后监听了这个信号的函数就会执行. ...

  2. django的信号signals详解

    介绍: Django 提供一个了"信号分发器"机制,允许解耦的应用在框架的其它地方发生操作时会被通知到. 通俗而讲Django信号的工作原理,就是当某个事件发生的时候,会发出一个信 ...

  3. django的 信号

    1.信号,其实就是钩子,可以在上面几种情况下定义执行某个函数,我们一般在project的__init__文件中定义,下面就是一个例子 2.用到模块需要导入,分别在下面的几个路径中 from djang ...

  4. django:信号机制

    文章目录 一,django信号 (一)什么是信号 (二)信号的使用场景 1,信号的直接使用场景 2,使用信号的终极目的 3,使用原则 二,如何使用信号 (一)自定义与使用信号 1,创建信号.信号发送器 ...

  5. Django框架---- 信号

    Django中的信号及其用法 Django中提供了"信号调度",用于在框架执行操作时解耦. 一些动作发生的时候,系统会根据信号定义的函数执行相应的操作 Django中内置的sign ...

  6. Django的信号Signals介绍及使用

    Django提供一种信号机制.其实就是观察者模式,又叫发布-订阅(Publish/Subscribe) .当发生一些动作的时候,发出信号,然后监听了这个信号的函数就会执行.通俗来讲,就是一些动作发生的 ...

  7. Django signals 信号总结

    故事背景 最近在做的项目中都遇到使用 django 信号量,故此总结信号相关的使用. 什么是信号 Django 中内置一个 信号调度器,它可以帮助应用程序在框架中的其他地方发生某些固定操作时能够得到通 ...

  8. Django模型信号——django.db.models.signals

    目录 一.监听信号 1.接收器函数¶ 2.连接接收器函数¶ 3.连接到特定发送器发送的信号¶ 4.防止重复信号¶ 二.定义和发送信号 1.定义信号¶ 2.发送信号¶ 三.断开信号¶ 本站相关文章: 1 ...

  9. 组合键 发送指定信号_Django signal 信号机制的使用

    Django中提供了"信号调度",用于在框架执行操作时解耦,当某些动作发生的时候,系统会根据信号定义的函数执行相应的操作 一.Django中内置的 signal 类型主要包含以下几 ...

  10. Django进阶教程

    Django进阶教程 Queryset特性及高级查询技巧 什么是QuerySet QuerySet是Django提供的强大的数据库接口(API).正是因为通过它,我们可以使用filter, exclu ...

最新文章

  1. LeetCode简单题之数组中第 K 个独一无二的字符串
  2. 实验楼第二次试验报告
  3. BUUCTF(pwn)ciscn_2019_ne_5
  4. SpringBoot https访问控制
  5. NAT类型及检测方法
  6. rpc结构错误_结构性错误
  7. K近邻算法:机器学习萌新必学算法
  8. Linux学习总结(16)——CentOS 下 Nginx + Tomcat 配置负载均衡
  9. Jquery操作对控件的取值、赋值
  10. 比较流行的10个博客系统程序对比选择
  11. python逐行比较两个csv_python内两个CSV文件数据比较。。。求大神解答!!
  12. 写一个函数,首先要明确是完成一个流程,还是一个功能
  13. 3D远方动态白云页面源码
  14. 数据挖掘考前30分钟必看(2.0版本)
  15. 使用Latex写大论文的经验总结
  16. 计算机windows7更新失败,Win7电脑windows update更新失败如何解决?
  17. <JVM上篇:内存与垃圾回收篇>13-垃圾回收器
  18. 高级搜索:搜索指定网址
  19. ElasticSearch cardinality基数 算法优化内存开销及HLL算法
  20. DeepLabv3+

热门文章

  1. 2019全国大学生电子设计大赛(回忆录)
  2. 绩效沟通季的瓜不好吃,小心下一个吃瓜的是你?
  3. 基于内存搜索的进程检测方法
  4. uni-app 页面跳转
  5. 基于管道过滤器实现的kwic实现
  6. 里加一列为1_风味人间2:大厨做的拔丝苹果,拉丝1米长,根根分明
  7. HSY 点餐(数论)
  8. 你逛过凌晨4点的校园吗? -- 前端人的漫漫长路
  9. wifi信号衰减与距离关系_wifi无线信号传输衰减和距离的关系公式[室内定位]
  10. The Pilots Brothers‘ refrigerator(思维)