我使用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传递给视图/模板,因为重定向不需要上下文。任何想法,如果有一个干净的标准方式这样做?
注意:数据由匿名用户输入。因此保存的数据和用户不相关联。
答案 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)