Django FormWizard - 完成时显示摘要

问题描述:

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

我可以通过重写进行()方法是这样实现的:

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传递给视图/模板,因为重定向不需要上下文。任何想法,如果有一个干净的标准方式做到这一点?

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

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

如果你使用这个,我会建议设置SESSION_EXPIRE_AT_BROWSER_CLOSE = True或会话过期时间。

+0

嘿,是的。我确实使用了会话,但仅仅添加一个查找键就足够了。谢谢,我会记住会议的到期时间。 – mzu

我认为你可以这样做。

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) 
+0

感谢您的回答。我最后只是在会话中添加一个密钥,然后重定向(confirmation_view)。在confirmation_view中,我可以通过会话密钥查找所需的数据。 – mzu