• Signals


    信号:在需要的地方通知receiver某些操作已发生。如调用model的save方法时会发送pre_save(在调用save之前)和post_save,pre_save可以连接一个receiver函数,在函数中做需要的处理。

    django信号文档

    两种方式接收信号

    1.使用connect

    from django.core.signals import request_finished
    
    #request_finished是内置信号
    request_finished.connect(my_callback)

    2.使用装饰器

    from django.core.signals import request_finished
    from django.dispatch import receiver
    
    @receiver(request_finished)
    def my_callback(sender, **kwargs):
        print("Request finished!")

    对信号使用connect,对receiver使用装饰器

    自定义信号

    import django.dispatch
    
    pizza_done = django.dispatch.Signal(providing_args=["toppings", "size"])

    #providing_args为发送信号是需要携带的参数

    发送信号

    Signal.send(sender, **kwargs)[source]
    或者
    Signal.send_robust(sender,
    **kwargs)[source]

    两者都有返回值:
    Both send() and send_robust() return a list of tuple pairs [(receiver, response), ... ], representing the list of called receiver functions and their response values.
    区别:
    send不捕获异常,出现异常不保证能通知到所有receiver,send_robust捕获异常,出现异常可以通知所有receiver,异常会在返回的tuple中

    要有一个sender,空字符串也行

  • 相关阅读:
    pagination分页插件使用
    ajax实现图片文件上传和图片预览
    屏幕护眼色调调节
    css画三角形以及实现带三角的阴影效果
    软件测试homework3
    使用Junit包进行单元测试并导入eclemma包。
    软件测试homework2
    软件测试homework1 编程过程的一个小错误
    ReentrantLock
    Elasticsearch-基本概念
  • 原文地址:https://www.cnblogs.com/songbird/p/7544511.html
Copyright © 2020-2023  润新知