Django AllAuth - Google - 选择用户名

4
我们正在使用Django-allauth允许用户使用Google进行注册和登录。
问题是它自动从Google帐户中选择名字作为用户名。
是否可能让用户手动填写用户名?
我在Allauth-google文档中没有找到这样的设置。
这些是settings.py中的ACCOUNT_设置。
ACCOUNT_AUTHENTICATION_METHOD = "username_email"
ACCOUNT_CONFIRM_EMAIL_ON_GET = True
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_VERIFICATION = "mandatory"
ACCOUNT_EMAIL_SUBJECT_PREFIX = EMAIL_SUBJECT_PREFIX
ACCOUNT_EMAIL_CONFIRMATION_COOLDOWN = 1
ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION = True
ACCOUNT_PRESERVE_USERNAME_CASING = False
ACCOUNT_USERNAME_MIN_LENGTH = 4
ACCOUNT_USERNAME_REQUIRED = True

文档中没有以 SOCIALACCOUNT_ 开头的设置。


有一种方法可以创建自定义的唯一用户名。但我认为让客户选择用户名是不可能的,因为社交登录通常不会有这样的流程。 - Sandeep Balagopal
1
@SandeepBalagopal 是的,我知道用户名可以是唯一的,我想知道在allauth中是否有这样的内置选项。 - Milano
1个回答

2
你需要确保allauth不会尝试绕过注册表单。
在settings.py中:
SOCIALACCOUNT_AUTO_SIGNUP = False

这将会把用户重定向到默认的注册页面,并提供一个注册表格,让用户可以选择他们的用户名。SOCIALACCOUNT_AUTO_SIGNUP django-allauth readthedocs 说明 如果你想要的话,你也可以通过以下方式自定义社交账号注册时的注册表格:
在settings.py文件中:
SOCIALACCOUNT_FORMS = {
    'signup': 'mysite.forms.MyCustomSocialSignupForm',
}

在您的模型文件中:
from allauth.socialaccount.forms import SignupForm
class MyCustomSocialSignupForm(SignupForm):

    def save(self, request):

        # Ensure you call the parent class's save.
        # .save() returns a User object.
        user = super(MyCustomSocialSignupForm, self).save(request)

        # Add your own processing here.

        # You must return the original result.
        return user

然后,您可以添加任何必要的自定义更改到此表单中。

django-allauth readthedocs 用于覆盖默认注册表单


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接