担心django中的表单向导:AJAX,条件

时间:2011-12-07 16:09:15

标签: ajax django forms wizard

我有一套非常复杂的表单,我想在django中实现。后面的几个字段取决于早期字段中的值,验证规则非常复杂。

例如,假设表单正在帮助用户提交州税申报表。在第一页上,我可能会有一个用户选择州的选择框(阿拉巴马州,阿肯色州,阿拉斯加州......)。根据选择的州,下一页会提出完全不同的问题,因为各州的税收差别很大。

这似乎是巫师应该擅长的那种东西,但我以前从未做过django巫师,我有些担心。

首先,表单向导是否适用于AJAX?具体来说,我想在jquery选项卡对象中加载和呈现表单(及其所有步骤)。每个步骤完成后,表单的下一页将被动态加载,而不会重新加载整个页面。

第二,AFAICS,django表单向导中的条件视图/跳过模式只做布尔值。我的表单流程的一个关键部分是长期选择输入:选择状态。表单向导看起来不像他们可以非常优雅地处理这种模式。是否有一个好的解决方法或替代方案?

总的来说,形式向导是实现这种结构的正确方法吗?单独使用jquery似乎是不方便的,因为我(大概)必须在开始时将所有50个特定于状态的表单加载在一起。

2 个答案:

答案 0 :(得分:1)

我认为表单向导并不是你需要的(事实上界面看起来像向导不一定映射到django的向导概念,特别是因为你有一些动态表单)。从表单向导docs:

  

在多个网页上拆分表单。它维持一个州的状态   后端,以便可以延迟完整的服务器端处理   直到提交最终表格。

我的做法是做多个表单,并且最初让它们在没有太多javascript的情况下工作(好吧;如果你愿意,可以使用一些自动完成API加载状态)。然后,您可以尝试例如pjax

答案 1 :(得分:1)

最后,我的问题的答案是“不”和“不”。标准表单向导只是不优雅地执行AJAX和复杂条件,所以我最终编写了自己的类来完成它。