我什么时候应该在 Flask 中验证表单数据

When should I validate a form data in Flask

标题有点含糊,但这里是解释:

我在表单中有电子邮件字段。 WTF-Forms 验证正确的电子邮件地址,我可以在 validate_on_submit 之后继续。

例如,如果电子邮件已被用于注册表单,我应该在哪里查看?我可以编写自定义验证器并触发验证错误,或者我可以在验证后继续并闪烁错误消息。

哪个设计更好。有什么优点,缺点。

首先检查语法是否有效,然后检查它是否已被其他人使用。检查有效语法可能是一种成本更低的操作,因此从这里开始效率更高。

同样从常识的角度来看,如果地址无效,那么您可能不会关心它是否已经在使用中(如果可能的话)。

任一设计 都可以 工作,但我认为将 WTForm 验证留给验证实际字段会更有意义。

例如,如果您有一个获取输入的电子邮件字段:

notanemail

这应该会引发验证错误,因为验证字段中的输入是合法的错误。这更有意义。

输入 total@anemail.com 的同一字段是 有效的,因此验证应该继续,然后您可以检查已被占用的电子邮件地址和闪错。

一切都是为了分离关注点。 WTForms 应该只用于验证用户输入的信息是否有效,而不是它是否是对数据库的有效输入。