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

标签 django django-allauth

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

目前,当使用社交帐户注册时,用户注册,创建用户和社交帐户,然后根据他/她之前选择的个人资料类型以及填写该表格后,将用户重定向到要填写的表格是创建的正确配置文件类型。

如果用户、社交帐户和个人资料类型实例是在同一步骤中创建的,我希望它是在用户填写个人资料特定表格之后。无论如何我可以在不更改 allauth's 的情况下做到这一点代码?通过修改 allauth 来做到这一点并不难,但如果可以得到帮助,我宁愿不维护 3rd 方应用程序的自定义副本。

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

最佳答案

看看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来自 django-allauth 的模块还提供signals .其中,您可以找到allauth.socialaccount.signals.social_account_added :
# Sent after a user connects a social account to a his local account.
social_account_added = Signal(providing_args=["request", "sociallogin"])

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

关于具有多个配置文件模型的 Django-allauth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17963323/

相关文章:

Python/DJango属性错误: Model object has not attribute objects

python - django allauth 中不显示登录页面

django - 使用 django-allauth 找不到页面(404)

python - 如何使用allauth将范围参数设置为 strip 上的read_write?

django - Django 中用于 Auth 的多种用户类型

python - 当用户注销 Django 时如何删除 session ?

python - 尝试连接 ModelForm

python - 与 Django 的 MySQL 连接错误

python - 无请求时网站速度慢 + cpu 使用率高

python - 使用 allauth 登录时生成 jwt