Django-allauth有多个配置文件模型

时间:2013-07-31 06:39:38

标签: django django-allauth

我有一个django项目,其中有多个配置文件模型,每个模型都有一个用户模型的外键。它使用django-allauth进行注册。

目前,当使用社交帐户注册,用户注册,创建用户和社会帐户时,用户将被重定向到表单以填写,具体取决于他/她之前选择的配置文件类型,以及填写后out表单是创建的正确的配置文件类型。

如果用户,socialaccount和个人资料类型实例是在同一步骤中创建的,即在用户填写个人资料特定表单之后,我会喜欢它。无论如何我可以在不更改allauth's代码的情况下执行此操作吗?通过修改allauth来做到这一点并不难,但如果可以帮助我,我宁愿不维护第三方应用程序的自定义副本。

使用自定义适配器,因为它无权访问请求。

1 个答案:

答案 0 :(得分:11)

查看allauth.account.signals.user_signed_up信号,该信号在用户(社交或正常)注册后触发。您可以在那里使用自己的帐户执行操作:

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

@receiver(user_signed_up)
def do_stuff_after_sign_up(sender, **kwargs):
    request = kwargs['request']
    user = kwargs['user']
    # Do your stuff with the user
    user.save()

来自django-allauth repo

# Typically followed by `user_logged_in` (unless, e-mail verification kicks in)
user_signed_up = Signal(providing_args=["request", "user"])

要了解如何在django中使用信号,请阅读the official documentation about it

我希望它可以帮到你!

修改

我很高兴您找到了解决问题的方法,但由于中间件总是被加载,我建议使用我提出的方法。来自socialaccount的{​​{1}}模块也提供signals。其中,您可以找到django-allauth

allauth.socialaccount.signals.social_account_added

使用类似于先前编写的处理程序,您可以检查用户模型中的必填字段,然后调用redirect快捷方式,或返回重定向到显示的视图的HttpResponseRedirect对象/处理你的表格。