【问题标题】:django social auth pre_update signal is not getting fired when upgrading to django 1.5升级到 django 1.5 时,django social auth pre_update 信号没有被触发
【发布时间】:2013-04-06 05:20:12
【问题描述】:

我有下面的代码,它在 django 1.4 中运行良好,因为我升级了代码中的所有内容,因为信号根本没有被触发,所以仍然可以接受。

以前,当我在 1.4 上时,我使用用户配置文件来维护用户信息,但在升级时,我使用了自定义用户模型,其中包含一张表中的所有详细信息。我认为这无关紧要,因为当我测试社交身份验证时一切正常,请接受这部分。

def twitter_extra_values(sender, user, response, details, **kwargs):
    """
    accounts - twitter_extra_values - signal
    """
    try:
        TwitterExtra.objects.get_or_create(
            user        =   user,
            screen_name =   response.get('screen_name')
        )
    except IntegrityError:
        TwitterExtra.objects.get(
            user        =   user,
            screen_name =   response.get('screen_name')
        ).delete()
        # recursively attempt to recreate the record
        twitter_extra_values(sender, user, response, details, **kwargs)

    return True


pre_update.connect(twitter_extra_values, sender=TwitterBackend, dispatch_uid="accounts.twitter_extra_values")

【问题讨论】:

  • 这只是一个猜测,但我在 sender 参数上遇到了类似的问题。一旦我把参数拿出来,它就又开始工作了。如果你还需要控制信号的发送者,你应该试试issubclass(sender, Document)。此外,您可能希望确保只有 one dispatch_uidimport uuid 并将 dispatch_uid=str(uuid.uuid1()) 作为最后一个参数发送。

标签: django django-socialauth django-1.5


【解决方案1】:

您可能也升级了 django-social-auth。

不推荐使用信号: http://django-social-auth.readthedocs.org/en/latest/deprecated.html 并且最近被删除了。

以下是使用管道步骤设置 facebook 头像的示例: http://tryolabs.com/Blog/2012/02/13/get-user-data-using-django-social-auth/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-21
    • 2013-01-08
    • 2013-04-06
    • 2014-12-25
    • 1970-01-01
    相关资源
    最近更新 更多