我很难理解信号如何在我的应用程序中工作(以及它们如何工作)。我认为(适用于我目前的知识)这三个方面将适用:
我是不是完全不在基地(我觉得我可能会)。 我收到信号和多线程混淆了吗?如果是这样,他们在该应用程序中进行比较吗?它们仅用于去耦吗?另外,如何确保尽早实例化它们并且不使用局部函数(因为它们会收集垃圾)有什么用?有人可以详细说明吗?我应该将它们全部放入请求中间件中,这样我就不必担心吗?
最佳答案
Django Signals是一种执行A
响应事件E
的方法。
在虚幻的世界中,可以通过修改发生E
事件的代码并附加代码以执行A
Action 来避免使用信号。
问题在于这样做会使您失去可维护性,可读性和许多其他软件工程形容词:)
信号使您可以从E
事件发生的地点或方式进行相同的操作,从而以一种可维护性,可读性等巧妙的方式进行……
是的,我认为说信号对启用和的解耦非常有用。
(您还提到了多线程。如果这样做是因为您认为信号是好的,因为它们可以并发且如此迅速地执行...嗯...我不知道它们是否可以并发执行,但无论如何我真的不认为这就是Django信号有用的地方)
充分利用Signals的一个好方法的一个例子是,当您想要将其他信息存储到django中的用户时,必须使用Userprofiles。
在这种情况下,documentation itself告诉您,响应于任何新用户的创建而注册信号可能只是为了向新创建的用户添加一个空用户配置文件而方便。
关于Django:信号到底有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2097213/