入力を行うWTFormsでカスタムバリデーターを作成する必要があります:number:number-例2:1
match1 = StringField('Russia-Saudi Arabia', validators=[DataRequired()])
だから、私の質問は-そのようなバリデーターをどのように作成するのですか?
http://wtforms.readthedocs.io/en/latest/validators.html でドキュメントを確認しましたが、この場合(私にとって)あまり役に立ちませんでした。
前もって感謝します
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)