Вы можете написать собственный валидатор в форме, написав метод validate_{field_name}
.Если он поднимает 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)