2017-03-24 9 views
0

django-allauthを持つ訪問者の現在のフローは、ビジターがフォームに記入する場合です。まだ認証されていない場合は、facebook loginまたはstandard signupフォーム、元のフォームデータはACCOUNT_SIGNUP_FORM_CLASS=SignupFormdjango-allauth:ソーシャル・ログイン後にフォームを送信する

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']。私は、元のリクエストオブジェクトがdestoryedであると仮定して、投稿データは失われますか?また、フォームデータを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

Facebookのサインアップボタンを変更して、フォームデータをセッションデータとして保存し、allauthのfacebookログインURLにリダイレクトする中間ビューにリンクしています。

次に、ユーザーがfacebookで認証した後に、サインアップメソッドでセッションからフォームデータを抽出します。

関連する問題