2017-05-09 74 views
0

我有一个页面,我想要表现如下:首先,用户只看到一个表单,为了举例,可以说它允许用户选择产品类型。提交此表格后,会在其下方显示第二个表格(其内容取决于产品类型)。然后,用户可以填写第二个表单并提交,或者修改并重新提交第一个表单 - 无论哪种方式我都希望第一个表单维护用户的输入(在本例中为产品类型),即使第二个表单是提交。在提交第二个表单时保留一个表单的编辑数据

如何在django中干净地做到这一点?我正在努力的是以第一种形式保存数据:例如如果用户提交第二个表单并且存在验证错误,那么当页面显示第一个表单时,产品类型将呈现为空白,但我希望该选项保持设置为用户选择的内容。这种行为并不神秘或意外,但不是我想要的。另外,如果用户成功提交第二个表单,我想重定向,以便第一个表单保持选择状态,第二个表单被清除。

我想到的最好的办法是用第一种形式的字段(承认不是太多参数)和存储它的状态的URL,或者将两种形式组合成HTML中的一种形式对象并以不同的方式响应基于提交按钮的名称(尽管我没有看到如何使用重定向来清除第二个表单并保留第一个,如果我这样做)。有什么更清洁,更明显的方式,我失踪了?谢谢。

+0

我建议开始使用Ajax 。 –

回答

0

1)您应该开始使用ajax表单处理,如评论中提到的那个人。因为使用常规页面处理多个表单是痛苦的。

2)如果你想让它在没有Ajax的情况下工作,你应该创建3个在单页上呈现的表单。但是第二个是隐藏的,直到第一个填充没有错误并且有实际填充的东西。就像这样:

<form2 style="display: 
{% if not form1.errors and form1.field1 %} 
block 
{% else %} 
none 
{% endif %} 
;"</form2> 
0

可能是你可以存储第一表格值会话,并提供它们作为当你渲染错误的第二种形式的第一种形式的初始数据。
对于例如:数据= { “F1”:的request.session [ 'ABC'], “F2”:的request.session [ “XYZ”]}
Form1中= ABC(初始=数据)

相关问题