我有一个我想表现的页面:首先,用户只看到一个表单,例如,假设它允许用户选择产品类型。提交此表单后,会在其下方显示第二个表单(其内容取决于产品类型)。然后用户可以填写第二个表格并提交,或修改并重新提交第一个表格 - 无论哪种方式,我希望第一个表格维护用户的输入(在这种情况下,产品类型),即使提交第二份表格。
我怎样才能在django中干净利落地做到这一点?我正在努力的是保留第一种形式的数据:例如如果用户提交第二个表单并且它有验证错误,当页面显示第一个表单时,产品类型将呈现为空白但我希望选项保持设置为用户选择的内容。这种行为并不神秘或意外,但不是我想要的。此外,如果用户成功提交第二个表单,我想重定向,以便第一个表单维护选择,第二个表单被清除。
我所想到的最好的方法是使用第一个表单的字段(确实没有太多参数)来删除URL并将其状态存储在那里,或者将两个表单组合成HTML中的一个表单对象并响应不同的是基于提交按钮的名称(虽然我不知道如何使用重定向来清除第二种形式,如果我这样做,则保留第一种形式)。我有什么更清洁,更明显的方法吗?感谢。
答案 0 :(得分:0)
1)你应该开始使用ajax表单处理,正如评论中提到的那样。因为使用常规页面处理多个表单很痛苦。
2)如果你希望在没有ajax的情况下使用它,你应该创建3个在单个页面上呈现的表单。但是第二个2被隐藏,直到第一个没有错误并且实际填充了一些东西。像这样:
<form2 style="display:
{% if not form1.errors and form1.field1 %}
block
{% else %}
none
{% endif %}
;"</form2>
答案 1 :(得分:0)
可能是您可以在会话中存储第一个表单值,并在第二个表单出错时将它们作为第一个表单的初始数据提供。
例如:data = {“f1”:request.session ['abc'],“f2”:request.session [“xyz”]}
form1 = abc(initial = data)