我有一个source字段:
source = SelectField("Source", choices=[
('option1', 'option1'),
('option2', 'option2'),
('option3', 'option3'),
validators=[InputRequired()])然后是一个uri字段,它需要基于以上内容的不同正则表达式:
uri = StringField('URI', Regexp(regex=r'regex1'))例如:如果选择了option1,regex将是regex1,如果是option2,regex2,等等。
用WTForms实现它的正确方法是什么?
发布于 2018-06-20 22:34:35
这个功能在WTForms中不存在。你得自己摆平这个。根据特定的应用程序逻辑/需求,这很快就变得非常重要。
一种方法是让客户端JS向动态生成新表单的视图发送请求,并根据输入添加表单的后续部分。例如,您的字段可能有一个onChange或onBlur函数,它将输入发送到一个视图,该视图返回一个新表单,并添加下一组字段。
另一种方法是使用一些巧妙的表单呈现,CSS和JS。例如,表单将与所有可能的字段一起呈现,但这些字段将根据以前通过JS/CSS进行的选择有条件地隐藏和显示。这种方法的一个关注点是验证变得复杂。
关于如何用Django表单实现这一点,有几个记记,但没有WTForms。不过,同样的概念应该很容易适用于WTForms。
相关文档:动态形态组合。
https://stackoverflow.com/questions/50957084
复制相似问题