gpt4 book ai didi

Django 表单向导 : How to painlessly pass user-entered data between forms?

转载 作者:行者123 更新时间:2023-12-01 15:03:37 25 4
gpt4 key购买 nike

我正在使用 Django 1.4.3 中的 FormWizard 功能。

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

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

class 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 的表单是无界的。所以它们不包含用户的数据。有没有我可以用来获取数据本身的修复程序?我真的很想像上面那样使用上下文来传递数据。

最佳答案

试试这个:

def get_context_data(self, form, **kwargs):
previous_data = {}
current_step = self.steps.current # 0 for first form, 1 for the second form..

if current_step == '3': # assuming no step is skipped, this will be the last form
for count in range(3):
previous_data[unicode(count)] = self.get_cleaned_data_for_step(unicode(count))

context = super(my4StepWizard, self).get_context_data(form=form, **kwargs)
context.update({'previous_cleaned_data':previous_data})
return context

previous_data 是一个字典,它的键是向导的步骤(0 索引)。每个键的项是步骤中表单的cleaned_data,与键相同。

关于Django 表单向导 : How to painlessly pass user-entered data between forms?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14860392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com