django-allauth:社交登录后提交表格

时间:2017-03-24 09:53:40

标签: django django-allauth

django-allauth访问者的当前流量是访问者填写表单,如果他们尚未通过身份验证,则会显示一个登录模式,其中包含facebook登录或标准注册表单选项,原始表单数据将被保存在ACCOUNT_SIGNUP_FORM_CLASS=SignupForm

class SignupForm(forms.Form):

    def signup(self, request, user):
        new_user = Profile()
        new_user.user = user
        new_user.save()

        # if form data provided with signup save it.
        model = self.cleaned_data['model']
        if model:
           # save the form

如果用户使用标准注册表单注册,则此工作正常,但如果他们使用Facebook社交帐户注册,则表单中的值现在为空字符串,即self.cleaned_data['model']。我假设原始请求对象被破坏,因此后期数据丢失了?无论如何,似乎还没有将表单数据传递给Facebook并将其接收回来,例如

<a title="{{provider.name}}" href="{% provider_login_url provider.id modal="1" process="login" next=request.path scope=scope auth_params=auth_params %}"

我想要的唯一方法是使用本地存储或数据库保存表单数据,然后以某种方式将其分配回访问者并保存吗?

1 个答案:

答案 0 :(得分:0)

我已经使用的是更改Facebook注册按钮以链接到中间视图,我将表单数据保存为会话数据,然后重定向回allauth facebook登录URL。

然后我在用户通过facebook验证后,在注册方法中从会话中提取表单数据。

相关问题