Django FormWizard - 完成后显示摘要

时间:2012-09-17 09:28:12

标签: django redirect formwizard

我使用Django的FormWizard作为多步骤表单,作为最后一步(在保存数据之后),我想显示先前输入的表单数据的摘要。

我可以通过覆盖这样的done()方法来实现这一点:

def done(self, form_list, **kwargs):
    info = self.save_info(form_list[0])
    extra = self.save_extra(info, form_list[1])
    # how to provide context for redirect?
    # return redirect('confirmation.html')
    # this works, but uses POST
    return render_to_response(
        'confirmation.html',
        {'form_list': [form.cleaned_data for form in form_list]},
        context_instance=RequestContext(self.request)
    ) 

我不想通过POST调用确认,而是使用重定向(浏览器后退按钮)。但我不知道如何将form_list传递给视图/模板,因为重定向不需要上下文。任何想法,如果有一个干净的标准方式这样做?

注意:数据由匿名用户输入。因此保存的数据和用户不相关联。

2 个答案:

答案 0 :(得分:1)

您还可以在会话中保存formdata,并在调用confirmation.html视图时检索该信息。

如果您使用此功能,我建议您设置SESSION_EXPIRE_AT_BROWSER_CLOSE = True或会话的到期时间。

答案 1 :(得分:0)

我认为你可以这样做。

def done(self, form_list, **kwargs):
    info = self.save_info(form_list[0])
    extra = self.save_extra(info, form_list[1])
    # how to provide context for redirect?
    # return redirect('confirmation.html')
    # this works, but uses POST
    form_list=[form.cleaned_data for form in form_list]

    return HttpResponseRedirect("/url/"+form_list)