繁体   English   中英

Django-allauth自定义社交注册表单

[英]Django-allauth custom social signup form

大家。 我开始在django工作。 当我搜索身份验证系统时,我发现了django-allauth软件包。 很好,但是当尝试自定义社交注册表单时我遇到了问题,我想让用户在那时注册用户并输入密码,并且他们必须在注册时填写。 作为文档,我编写自定义表格。

class SocialSignupForm(forms.Form):

password1 = forms.CharField(max_length=30, label="Password")
password2 = forms.CharField(max_length=30, label="Password(again)")

def clean_password1(self):
    if ("password1" in self.cleaned_data and "password2" in self.cleaned_data):
        if self.cleaned_data['password1'] != self.cleaned_data['password2']:
            raise forms.ValidationError(_("You must type the same password"
                                          " each time."))
    return self.cleaned_data["password1"]

def signup(self, request, user):
    user.set_password(self.cleaned_data["password1"])
    user.save()

在我放的设置文件中

ACCOUNT_AUTHENTICATION_METHOD = "email"
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_USERNAME_REQUIRED = True
ACCOUNT_EMAIL_REQUIRED = True
SOCIALACCOUNT_AUTO_SIGNUP = True
SOCIALACCOUNT_QUERY_EMAIL = True
SOCIALACCOUNT_PROVIDERS = {
    'facebook': {
        'SCOPE': ['email', 'publish_stream'],
        'METHOD': 'oauth2'
    }
}
ACCOUNT_ADAPTER = 'myapp.adapter.MyAccountAdapter'
SOCIALACCOUNT_ADAPTER = 'myapp.adapter.MySocialAccountAdapter'
ACCOUNT_SIGNUP_FORM_CLASS = 'myapp.forms.SignupForm'
SOCIALACCOUNT_FORMS =  {'signup': 'myapp.forms.SocialSignupForm'}

但是当我尝试连接社交提供者时,我收到了:

init ()获得了意外的关键字参数'sociallogin'

任何人都可以建议我如何解决该问题

我在这里回答了一个类似的问题: https : //stackoverflow.com/a/28515254/1016544,所以您可以看一下。 除了未实现自己的自定义适配器外,我使用的设置与您相同。 另一个重大区别是,我覆盖了clean_password2()函数而不是clean_password1(),因为在我的情况下它不起作用。

如果有帮助,别忘了接受它作为答案:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM