【问题标题】:Django Form Wizard: How to make a "Confirmation" screen as the last step of your wizard?Django 表单向导:如何将“确认”屏幕作为向导的最后一步?
【发布时间】:2013-02-14 17:29:07
【问题描述】:

从之前的问题重新发布:

Django FormWizards: How to painlessly pass user-entered data between forms?

我在 Django 1.4.3 中使用 FormWizard 功能。

我已经成功创建了一个 4 步表单。在表单的前 3 个步骤中,它正确地从用户那里获取信息,对其进行验证等。在第 4 步中,它现在只显示一个“确认”按钮。没有其他的。当你在第 4 步点击“确认”时,在 done() 函数中使用它做一些有用的事情。到目前为止一切正常。

但是,我想在第 4 步(确认步骤)中向用户显示他们在之前的步骤中输入的数据以供他们查看。我试图找出最轻松的方法来实现这一点。到目前为止,我正在上下文中创建一个名为 formList 的条目,其中包含已完成的表单列表。

类 my4StepWizard(SessionWizardView):

def get_template_names(self):
    return [myWizardTemplates[self.steps.current]]

def get_context_data(self, form, **kwargs):
    context = super(my4StepWizard, self).get_context_data(form=form, **kwargs)
    formList = [self.get_form_list()[i[0]] for i in myWizardForms[:self.steps.step0]]

    context.update(
        {
            'formList': formList,
        }
    )
    return context        


def done(self, form_list, **kwargs):
    # Do something here.
    return HttpResponseRedirect('/doneWizard')

Form #1 有一个名为 myField 的输入字段。所以在我的第 4 步模板中,我想做 {{ formList.1.clean_myField }}。但是,当我这样做时,我收到以下错误:

异常值: 'my4StepWizard' 对象没有属性 'cleaned_data'

看来我放入 formList 的表单是无限的。所以它们不包含用户的数据。有没有可以用来获取数据本身的修复程序?我真的很想像上面那样使用上下文来传递数据。

【问题讨论】:

    标签: django


    【解决方案1】:

    如果您的三个表单中没有重复的字段名称,您可以使用 WizardView.get_all_cleaned_data()。它返回所有可以通过 get_context_data() 传递给模板的数据的字典,就像您尝试做的那样。 That's the angle I'm currently taking,但我希望能找到更好的方法。

    【讨论】:

      猜你喜欢
      • 2011-04-18
      • 1970-01-01
      • 2012-06-18
      • 1970-01-01
      • 2012-08-09
      • 2019-11-27
      • 1970-01-01
      • 1970-01-01
      • 2013-10-03
      相关资源
      最近更新 更多