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或会话过期时间。
答
我认为你可以这样做。
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
嘿,是的。我确实使用了会话,但仅仅添加一个查找键就足够了。谢谢,我会记住会议的到期时间。 – mzu