Userena有多个注册表单(表单向导)

时间:2013-01-30 10:16:17

标签: django django-forms django-formwizard

我正在尝试设置多个表单以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])),

它就像一个表格,放在两个页面上,带有“下一个”和“上一个”按钮。


但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}),

所以我在这里遇到了很大的问题 - 整合这两件事,但我甚至不知道应该从什么开始。

1 个答案:

答案 0 :(得分:0)

使用类似http://wbotelhos.com/stepy之类的内容可能会更好,并在单页上显示您的表单?