我过去曾使用过Django信号。我现在正在研究1.10应用程序,由于某种原因,我无法调用接收器。
APP1 / signals.py
from django.dispatch import Signal
list_member_updated = Signal(providing_args=['list_member_id',])
APP1 / models.py
print('Dispatching signal...')
list_member_updated.send(self.__class__, list_member_id=list_member.id)
APP1 / apps.py
class DjangoApp1Config(AppConfig):
name = 'app1'
def ready(self):
import app1.signals
APP2 / util.py
from django.dispatch import receiver
from app1.signals import list_member_updated
@receiver(list_member_updated)
def handle_member_updated(sender, **kwargs):
print('Received signal')
所以我在控制台中得到“Signal dispatched ...”,但不是“Received signal”。我有一种感觉,我错过了一些简单的东西,但我只是看不到它。
答案 0 :(得分:2)
在 app1 / __ init __。py 中添加上述行。它对我有用
default_app_config = 'app1.apps.DjangoApp1Config'
注意:如果您已在 INSTALLED_APPS 设置中引用AppConfig,则不需要app1 / __ init__.py位。
您可以参考this了解详情。