2016-09-16 14 views
0

最終的にフォームの4または5ページになる複数フォームのサインアップにはdjangoウィザードを使用しています。しかし、何らかの形でフォームアクションに関連する可能性のある検証エラーが出てきています。これは解決方法がわかりません。djangoフォームウィザード、ValidationError:['ManagementFormデータがありません、または改ざんされました']

ここでエラーは282行目から生じているようです:https://github.com/django/django-formtools/blob/master/formtools/wizard/views.py しかし、私はそれが原因で何かが判明していませんか?

(私はジャンゴクリスピーフォームを使用していますが、適切ではないかもしれません注意してください)

views.py

class SignupWizard(SessionWizardView): 
    def get_template_names(self): 
     return [TEMPLATES[self.steps.current]] 

    def done(self, form_list, **kwargs): 
     for form in form_list: 
      if isinstance(form, SignupForm): 
       user = form.save(self.request) 
       complete_signup(self.request, user, settings.ACCOUNT_EMAIL_VERIFICATION, settings.LOGIN_REDIRECT_URL) 
      else: 
       other_signup_form = form.save(commit=False) 
       user = self.request.user 
       other_signup_form.user = user 
       other_signup_form.save() 
     return HttpResponseRedirect(settings.LOGIN_REDIRECT_URL) 


signup_view = SignupWizard.as_view(SIGNUP_FORMS) 

forms.py

class SignupForm(allauthforms.SignupForm): 

    def __init__(self, *args, **kwargs): 
     super().__init__(*args, **kwargs) 
     self.helper = FormHelper(self) 
     self.helper.label_class = 'sr-only' 
     self.helper.layout = Layout(
      Field('name', placeholder='Your Name'), 
      PrependedText('email', '<i class="fa fa-envelope-o"></i>', placeholder="Your Email", 
          autofocus=""), 
      PrependedText('password1', '<i class="fa fa-key"></i>', placeholder="Enter Password"), 
      Submit('sign_up', 'Sign up', css_class="btn btn-block btn-cta-primary"), 
      ) 

class SignupForm2(forms.Form): 
    first_name = forms.CharField(max_length=30) 
    last_name = forms.CharField(max_length=30) 

テンプレート:

{% block inner %} 
    <h2 class="title text-center">Sign up now</h2> 
    <p class="intro text-center">It only takes 2 minutes.</p> 
    <div class="row"> 
      {% crispy form %}   
    </div> 
{% endblock %} 

答えて

3

フォームwizar

{{ wizard.management_form }} 

は、詳細はthe docsを参照してください:dが、あなたのテンプレートのフォームタグで管理フォームが含まれている必要があります。

+0

ありがとうございましたAlasdairは完璧に機能していましたが、テンプレートにもっと必要と思われることはありませんでした。 – Yunti