0

我将 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 传递给视图/模板,因为重定向不带上下文。如果有一种干净的标准方法可以做到这一点,有什么想法吗?

注意:数据由匿名用户输入。所以保存的数据和用户没有关联。

4

2 回答 2

1

您还可以将表单数据保存在会话中,并在调用 Confirmation.html 视图时检索该信息。

如果您使用它,我建议设置 SESSION_EXPIRE_AT_BROWSER_CLOSE = True 或会话的过期时间。

于 2012-09-17T12:10:05.977 回答
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)
于 2012-09-17T10:08:52.377 回答