重新加载页面后,Django SessionWizardView跳回到第一步

时间:2012-10-01 16:28:31

标签: django django-forms django-formwizard

我正在使用管理两种表单的SessionWizardView。例如,当我在最后一步重新加载页面时,我回到了第一步,并且必须再次输入所有字段。

这是预期的行为吗?如果是这样,是否有可能在重新加载页面之前回到我所处的步骤?当然应该填写所有字段。

class ManufacturingCalculatorWizard(SessionWizardView):
  def get_template_names(self):
    TEMPLATES = {
        "blueprint": "manufacturing/forms/select_blueprint.haml",
        "calculator": "manufacturing/forms/calculator.haml"
    }

    return [TEMPLATES[self.steps.current]]

  def done(self, form_list, **kwargs):
    form_data = [form.cleaned_data for form in form_list]
    rcontext = RequestContext(self.request, { 'data' : calculate_manufacturing_job(form_data) })
    return render_to_response('manufacturing/forms/result.haml', rcontext)

1 个答案:

答案 0 :(得分:2)

done方法之后呈现的页面不是向导的一部分,因此当您重新加载它时,django将尝试重定向到第一页作为向导的新会话。

如果要将最后一步添加为预览和确认页面,可以使用虚拟表单添加新步骤并使用模板显示相应的数据。要从先前的步骤中获取数据,您可以使用get_context_data视图方法,使用以前表单的已清理数据构建上下文。