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

Python 使用Flask的WTForms中的自定义验证器,python,validation,flask,flask-wtforms,Python,Validation,Flask,Flask Wtforms,我需要在WTForms中创建一个自定义验证器,其中输入为:number:number-例如2:1 match1 = StringField('Russia-Saudi Arabia', validators=[DataRequired()]) 所以,我的问题是-如何创建这样的验证器 我在上查看了文档,但在本例中(对我)没有太大帮助 提前感谢您可以通过编写validate{field\u name}方法在表单中编写自定义验证器。如果引发验证错误,则表单将无效并显示错误 对于您的具体情况,这里有一

我需要在WTForms中创建一个自定义验证器,其中输入为:number:number-例如2:1

match1 = StringField('Russia-Saudi Arabia', validators=[DataRequired()])
所以,我的问题是-如何创建这样的验证器

我在上查看了文档,但在本例中(对我)没有太大帮助


提前感谢

您可以通过编写
validate{field\u name}
方法在表单中编写自定义验证器。如果引发
验证错误
,则表单将无效并显示错误

对于您的具体情况,这里有一个使用正则表达式的解决方案。它找到字符串的匹配项,然后使用一点拆分来获取分数。验证表单后,您可以通过
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)

@janmpeterka应该是
def validate\u match1(self、form、field)
或者您可以使用
@staticmethod