【问题标题】:In Python Flask WTForms, how to create a dependency over another field在 Python Flask WTForms 中,如何创建对另一个字段的依赖项
【发布时间】:2018-06-20 21:11:33
【问题描述】:

我有一个source 字段:

source = SelectField("Source", choices=[
                   ('option1', 'option1'),
                   ('option2', 'option2'),
                   ('option3', 'option3'),
               validators=[InputRequired()])

然后是 uri 字段,它需要基于上述内容的不同正则表达式:

uri = StringField('URI', Regexp(regex=r'regex1'))

例如。如果选择了option1,则正则表达式将为regex1,如果option2regex2,以此类推。

用 WTForms 实现它的正确方法是什么?

【问题讨论】:

标签: python flask flask-wtforms wtforms


【解决方案1】:

WTForms 中不存在此功能。你必须自己工具。这很快就会变得非常重要,具体取决于您的特定应用程序逻辑/需求。

一种方法是让客户端 JS 将请求发送到动态生成新表单的视图,并根据输入添加表单的后续部分。例如,您的字段可能有一个onChangeonBlur 函数,该函数将输入发送到一个视图,该视图返回一个新表单,其中添加了下一组字段。

解决此问题的另一种方法是使用一些巧妙的表单渲染、CSS 和 JS。例如,表单将使用所有可能的字段呈现,但字段将根据先前通过 JS/CSS 的选择有条件地隐藏和显示。这种方法的一个问题是验证变得复杂。

有一些writeups 介绍了如何使用 Django Forms 而不是 WTForms 来实现这一点。不过,相同的概念应该很容易适用于 WTForms。

相关文档:dynamic form composition

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-10
    • 2018-02-24
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    相关资源
    最近更新 更多