使用 WTForms 进行表单验证

    如果要使用 WTForms ,那么首先要把表单定义为类。我推荐把应用分割为多个模 块( 大型应用作为一个包 ),并为表单添加一个独立的模块。

    使用一个扩展获得大部分 WTForms 的功能

    扩展可以实现本方案的所有功能,并且还提供一些辅助小工具。 使用这个扩展可以更好的使用表单和 Flask 。您可以从 PyPI 获得这个扩展。

    下面是一个典型的注册页面的示例:

    注意,这里我们默认视图使用了 SQLAlchemy ( )。当然这 不是必须的,请根据您的实际情况修改代码。

    请记住以下几点:

    1. 调用 函数来验证数据。如果验证通过,则 函数返回 True ,否则返回 False

    现在我们来看看模板。把表单传递给模板后就可以轻松渲染它们了。看一看下面的示例 模板就可以知道有多轻松了。 WTForms 替我们完成了一半表单生成工作。为了做得更好, 我们可以写一个宏,通过这个宏渲染带有一个标签的字段和错误列表(如果有的话)。

    以下是一个使用宏的示例 _formhelpers.html 模板:

    上例中的宏接受一堆传递给 WTForm 字段函数的参数,为我们渲染字段。参数会 作为 HTML 属性插入。例如您可以调用 来为输入元素添加一个 类。注意: WTForms 返回标准的 Python 字符串,因此我们必须使用 |safe 过滤器告诉 Jinja2 这些数据已经经过 HTML 转义了。

    以下是使用了上面的 _formhelpers.htmlregister.html 模板: