python - Django 1.8 - 信号 - @receiver 装饰器和 Signal.connect() 方法有什么区别?

标签 python django signals decorator receiver

他们似乎在做同样的事情。在功能、用途等方面有区别吗?在什么情况下应该使用一个而不是另一个?

谢谢

最佳答案

从功能的角度来看,它们确实做了完全相同的事情。除了开发人员希望如何组织代码之外,没有理由偏爱其中一个。

编辑:根据@knbk 的出色回答,您应该使用 connect 函数执行特定操作,例如传递回调函数列表。

来自Django documentation on signals :

There are two ways you can connect a receiver to a signal. You can take the manual connect route:

from django.core.signals import request_finished

request_finished.connect(my_callback)

Alternatively, you can use a receiver() decorator:

from django.core.signals import request_finished
from django.dispatch import receiver

@receiver(request_finished)
def my_callback(sender, **kwargs):
    print("Request finished!")

关于python - Django 1.8 - 信号 - @receiver 装饰器和 Signal.connect() 方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31652154/

相关文章:

python - 如何使用 selenium 和 python 使此代码更高效

python - python中的牌组卡类

Django ORM : Getting reverse dict

Python 在嵌套循环中求平均值

django - 在 Django 中将 DateField 更改为 DateTimeField

python - 在 Django 中,为什么这个错误提示我的列不能为空?

c - 对多个信号使用单个信号处理函数的正确方法是什么?

c - SIGCHLD 没有被 epoll_wait 捕获?

python - 寻找二阶多项式的回归 python

python - 与前几天相比,识别缺失值并创建新的数据框,Pandas