0

django-userenaサインアップに複数のフォームを設定しようとしています。

だからdjango-docsから私はこのようにそれを行うことができます:

forms.py:

class Form1(forms.Form):
    some_field = forms.CharField(max_length=100)
    email = forms.EmailField()

class Form2(forms.Form):
    some_field_2 = forms.CharField(widget=forms.Textarea)

views.py:

class Wizard(SessionWizardView):
    def done(self, form_list, **kwargs):
        return render_to_response('done.html', {
            'form_data': [form.cleaned_data for form in form_list],
        })

urls.py:

(r'^signup/$', Wizard.as_view([Form1, Form2])),

そして、それは「次へ」と「前へ」のボタンで2ページに配置された1つのフォームのようになります。


ただし、userenaコードにはいくつかの違いがあり、次のようになります。

views.py:

if userena_settings.USERENA_WITHOUT_USERNAMES and (signup_form == SignupForm):
    signup_form = SignupFormOnlyEmail

form = signup_form()

if request.method == 'POST':
    form = signup_form(request.POST, request.FILES)
    if form.is_valid():
        user = form.save()

        # Send the signup complete signal
        userena_signals.signup_complete.send(sender=None,
                                             user=user)


        if success_url: redirect_to = success_url
        else: redirect_to = reverse('userena_signup_complete',
                                    kwargs={'username': user.username})

        # A new signed user should logout the old one.
        if request.user.is_authenticated():
            logout(request)
        return redirect(redirect_to)

if not extra_context: extra_context = dict()
extra_context['form'] = form
return ExtraContextTemplateView.as_view(template_name=template_name,
                                        extra_context=extra_context)(request)

urls.py:

url(r'^accounts/signup/$', 'userena.views.signup', {'signup_form': SignupFormExtra}),

ですから、ここでの私の大きな問題は、この2つを統合することですが、何から始めればよいのかさえわかりません。

4

1 に答える 1

0

このhttp://wbotelhos.com/stepyのようなものを使用して、フォームを1ページに表示する方がよいかもしれません。

于 2013-01-30T11:22:19.637 に答える