【问题标题】:django-allauth signals user_signed_in signal isn't workingdjango-allauth 信号 user_signed_in 信号不起作用
【发布时间】:2021-04-21 05:20:00
【问题描述】:

我对 django 比较陌生,并试图在登录时触发一个功能。我已经测试了函数本身,它工作正常。 django-allauth 登录也正确配置。但是,我似乎无法在登录时触发以下信号。

请参阅下面的代码...任何帮助将不胜感激...

pages/apps.py

from django.apps import AppConfig


class PagesConfig(AppConfig):
    name = 'pages'

    def ready(self):
        import apps.pages.signals

pages/signals.py

from allauth.account.signals import user_logged_in
from django.dispatch.dispatcher import receiver

from django.utils import timezone
from datetime import timedelta
from .models import Token

@receiver(user_logged_in)
def user_logged_in_(request, user, **kwargs):
    is_valid = Token.objects.filter(valid_until__gte=timezone.now() + timezone.timedelta(seconds=10800)).values()
    if not is_valid:
        new = Token(token='valid', valid_until=timezone.now())
    else:
        new = Token(token='not valid', valid_until=timezone.now())
    
    new.save()

【问题讨论】:

    标签: python django django-allauth django-signals


    【解决方案1】:

    经过大量在线挖掘后设法解决了这个问题......

    您需要使用应用程序的完整 python 路径。这需要与 settings.py、apps.py 和 init.py 中的一致,即

    settings.py

    INSTALLED_APPS = ['dir.appname',]
    

    apps.py

    from django.apps import AppConfig
    
    
    class AppnameConfig(AppConfig):
        name = 'dir.appname'
    
        def ready(self):
            import dir.appname.signals
    

    init.py

    default_app_config = 'dir.appname.apps.AppnameConfig'
    

    以下文章有助于解决问题 -

    Django : Can't import 'module'. Check that module AppConfig.name is correct

    How do I hook a django-allauth signal?

    【讨论】:

      猜你喜欢
      • 2018-12-29
      • 2018-06-26
      • 2015-01-22
      • 2011-09-03
      • 2019-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-25
      相关资源
      最近更新 更多