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 %}"
我想要的唯一方法是使用本地存储或数据库保存表单数据,然后以某种方式将其分配回访问者并保存吗?
答案 0 :(得分:0)
我已经使用的是更改Facebook注册按钮以链接到中间视图,我将表单数据保存为会话数据,然后重定向回allauth facebook登录URL。
然后我在用户通过facebook验证后,在注册方法中从会话中提取表单数据。