• Django学习-20-信号


    Django信号
                
        使得某个操作之前能定制化一些任务
            - 内置信号
    pre_init # django的model执行其构造方法前,自动触发
    post_init # django的model执行其构造方法后,自动触发
    pre_save # django的model对象保存前,自动触发
    post_save # django的model对象保存后,自动触发
    pre_delete # django的model对象删除前,自动触发
    post_delete # django的model对象删除后,自动触发
    m2m_changed # django的model中使用m2m字段操作第三张表(add,remove,clear)前后,自动触发
    class_prepared # 程序启动时,检测已注册的app中modal类,对于每一个类,自动触发
    Management signals
    pre_migrate # 执行migrate命令前,自动触发
    post_migrate # 执行migrate命令后,自动触发
    Request/response signals
    request_started # 请求到来前,自动触发
    request_finished # 请求结束后,自动触发
    got_request_exception # 请求异常后,自动触发,中间件之前执行
    Test signals
    setting_changed # 使用test测试修改配置文件时,自动触发
    template_rendered # 使用test测试渲染模板时,自动触发
    Database Wrappers
    connection_created # 创建数据库连接时,自动触发
             -导入
                    from django.core.signals import XX00
     
                -注册函数
    ☆☆☆☆☆必须将函数import到项目的__init__.py中☆☆☆☆☆
    signals.py ---> projectname.__init__.py import signals.py
    def a1():
    pass
    def a2():
    pass
    pre_init.connect(a1)
    pre_init.connect(a2)
    顺序执行 a1,a2ender='seven',toppings=123, size=456)
      
    - 自定义
      - 定义信号
    import django.dispatch
    pizza_done = django.dispatch.Signal(providing_args=["toppings", "size"])#触发信号者必须要传递2个参数

      - 信号中注册函数

    def callback(sender, **kwargs):
    print("callback")
    print(sender,kwargs)
    pizza_done.connect(callback)

      - 触发信号

        自己触发信号(测试),自定义的信号自能自己触发

    from 路径 import pizza_done
    pizza_done.send(sender='seven',toppings=123, size=456)
    实例:
    服务器CPU、内存等参数超过阀值,自动触发信号
  • 相关阅读:
    JDBC与JAVA数据库编程
    Java中的网络编程
    OracleDBA之表管理
    OracleDBA之用户管理
    OracleDBA之数据库管理
    Java中的多线程
    JavaSE高级之GUI编程
    JavaSE高级之集合类
    Java面向对象练习
    Java基本语法练习
  • 原文地址:https://www.cnblogs.com/cq146637/p/7819353.html
走看看 - 开发者的网上家园