如何在 django-allauth 的社交帐户注册流程中显示自定义表单

How to display custom form in django-allauth's social account sign up flow

我正在努力实现所有这些:

A. 新用户可以使用或不使用 facebook 注册。

B. 作为注册流程的一部分,他们都会收到一张表格,用于填写额外的用户信息。

C. 新帐户默认处于非活动状态。管理员在手动激活(或删除)帐户时需要额外的用户信息。


我使用 django-allauth 社交账户获得了 A

我通过向 django.db.models.signals.pre_save 添加侦听器并设置 user.active = False

实现了 C

我通过在 settings.py 中定义自定义 ACCOUNT_SIGNUP_FORM_CLASS 部分实现了 B。然而,据我所知,这仅适用于本地 "non-social" 帐户,因为社交登录似乎会跳过此表单。

我的问题是当有人使用 allauth 社交帐户注册时,他们没有机会提供其他信息,因为他们的帐户将在没有首先显示我的自定义的情况下创建注册表单。

此外,由于所有新帐户都会自动保存为非活动帐户,并且管理员需要额外的信息才能激活它们,所以我不能简单地将该表格添加到 "first time login flow"(注意:不可能登录非活动帐户)。

我想解决这个问题的一种方法是不自动将帐户保存为非活动帐户,而是使用权限,但如果可以避免的话,我宁愿不重写我的所有视图等。

如有任何意见,我们将不胜感激!谢谢!

将此选项添加到您的 settings.py 文件:

SOCIALACCOUNT_AUTO_SIGNUP = False