【问题标题】:Django - Signal receiver not being calledDjango - 未调用信号接收器
【发布时间】:2020-06-05 17:15:08
【问题描述】:

我正在开发一个使用 Django All Auth 的项目。

在包里面,有一个account.signals文件,里面有一个信号。

email_confirmed = Signal(providing_args=["request", "email_address"])

EmailConfirmationHMAC的模型内部使用。

def confirm(self, request):
        if not self.email_address.verified:
            email_address = self.email_address
            get_adapter(request).confirm_email(request, email_address)
            signals.email_confirmed.send(sender=self.__class__,
                                         request=request,
                                         email_address=email_address)
            return email_address

在这里添加一个堆栈跟踪,我可以看到它正在到达这部分。

在我的项目中,我有一个 python 文件receivers.py

from allauth.account.signals import email_confirmed
from django.dispatch import receiver


@receiver(email_confirmed)
def custom_logic(sender, **kwargs):
    a = 0
    import ipdb;
    ipdb.set_trace()
    if a:
        pass

但是,每当我确认电子邮件验证时,我的自定义逻辑调试器没有被点击,电子邮件正在被确认并且页面正在重新路由。

我如何确保我的custom_logic函数在发送信号后可以运行?

 signals.email_confirmed.send(sender=self.__class__,
                                         request=request,
                                         email_address=email_address)

谢谢!

【问题讨论】:

    标签: python django signals django-allauth


    【解决方案1】:

    所以问题在于我如何导入信号。

    apps.py下我添加了以下内容:

    from django.apps import AppConfig
    
    
    class AuthUsersConfig(AppConfig):
        name = 'auth_users'
    
        def ready(self):
            import auth_users.signals
    

    然后在我的__init__.py 里面我添加了:

    default_app_config = 'auth_users.apps.AuthUsersConfig'

    之后,当我到达端点时,我使用的自定义逻辑开始工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-06
      • 2019-01-08
      • 1970-01-01
      • 1970-01-01
      • 2018-11-10
      • 2013-07-07
      • 1970-01-01
      相关资源
      最近更新 更多