当前位置: 首页 > 面试题库 >

使用Flask的WTForms中的自定义验证器

金坚
2023-03-14
问题内容

我需要做一个自定义验证WTForms当输入为:数量:数量 -例如,2:1

match1 = StringField('Russia-Saudi Arabia', validators=[DataRequired()])

所以,我的问题是-如何创建这种验证器?


问题答案:

你可以通过编写validate_{field_name}方法在表单内编写自定义验证器。如果它引发a ValidationError,则该表格将无效并显示错误。

对于你的特定情况,这是使用正则表达式的解决方案。它找到字符串的匹配项,然后使用一些拆分来取回分数。验证你可以通过访问分数的形式后form.score1,form.score2

import re
from flask_wtf import FlaskForm

class MatchForm(FlaskForm):
    match1 = StringField("Russia-Saudi Arabia", validators=[DataRequired()])

    def validate_match1(form, field):
        if not re.search(r"^[0-9]+:[0-9]+$", field.data):
            raise ValidationError("Invalid input syntax")

        s1, s2 = form.data.split(":")
        form.score1 = int(s1)
        form.score2 = int(s2)


 类似资料:
  • 我正在尝试编写一个自定义bean验证器,并根据用户界面上的语言环境显示验证消息。 为此,我创建了一个验证器,如下所示: 我还注册了messageSource和validator bean: 在我的控制器中,我使用initBinder注册我的验证器: 不过,验证错误消息在用户界面上显示为{myproject.myclass.validation.name}。即使我设置了LocalValidatorF

  • 表单验证发生在数据验证之后。如果你需要定制化这个过程,有几个不同的地方可以修改,每个地方的目的不一样。表单处理过程中要运行三种类别的验证方法。它们通常在你调用表单的is_valid() 方法时执行。还有其它方法可以触发验证过程(访问errors 属性或直接调用full_clean() ),但是通用情况下不需要。 一般情况下,如果处理的数据有问题,每个类别的验证方法都会引发ValidationErr

  • 问题内容: 我想注册一个可以处理以下处理程序方法定义的自定义 我可以注册我的解析器,这只是创建了一个通过重写通过请求参数对象,从。当Spring尝试解析该参数时,它将遍历其列表(有很多),并选择它的第一个。 在上面的例子中,虽然我的解析器将被调用,我的论点将得到初始化,注释将不会被处理 ,并 为解析器,一个是因为它需要一个会失败,或在处理方法的说法,这我不没有。 如果我尝试通过添加来修复它 一实施

  • 问题内容: 我有一个看起来像这样的表格: 它的设置使得输入数据后所有必填字段和“保存”按钮都可以使用。但是,部分验证是,我将使用输入的数据使用$ http通过POST通过服务器访问服务器。 我应该在函数中放置该逻辑还是有一个更好的放置位置? 更新: * 我实现了以下内容,将其作为元素上的属性应用,但它在每次我不喜欢的按键上调用服务器/数据库: 问题答案: 您不需要在指令中发出$ http请求,更好

  • 如果您不得不跟浏览器提交的表单数据打交道,视图函数里的代码将会很快变得 难以阅读。有不少的代码库被开发用来简化这个过程的操作。其中一个就是 WTForms , 这也是我们今天主要讨论的。如果您发现您自己陷入处理很多表单的境地,那您也许 应该尝试一下他。 要使用 WTForms ,您需要先将您的表单定义为类。我建议您将应用分割为多个模块 (大型应用) ,这样的话您仅需为表单添加一个独立的模块。 挖掘

  • 问题内容: 我有其他人编写的REST api,其中处理请求到特定url的方法接受一堆从路径参数填充的参数。 撰写此文章的人曾经使用过DropWizard,但我以前没有使用它的经验。我的任务是通过将其与db中的值进行比较来验证studentId字段。这将非常简单,但是我被告知要使用自定义验证程序来执行此操作。我对编写注释非常陌生,但经过大量挖掘后,这样编写了注释, 此后,我将注释添加到了要像这样运行