Правило EqualTo
Правило EqualTo применяется к полю формы
и проверяет, что введённое значение совпадает
со значением другого поля. Первым параметром
передаётся имя поля, с которым сравнивается
текущее. Вторым необязательным параметром
идёт сообщение об ошибке.
Синтаксис
EqualTo(fieldname, [message])
Пример
Давайте создадим форму с двумя полями пароля и проверим их совпадение:
from flask import Flask, render_template, request
from flask_wtf import FlaskForm
from wtforms import PasswordField, SubmitField
from wtforms.validators import EqualTo
app = Flask(__name__)
app.config['SECRET_KEY'] = 'abcde'
class MyForm(FlaskForm):
password = PasswordField('Password')
confirm = PasswordField('Confirm', validators=[EqualTo('password')])
submit = SubmitField('Send')
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm()
if form.validate_on_submit():
return 'ok'
return render_template('index.html', form=form)
Шаблон для вывода формы:
<form method="post">
{{ form.hidden_tag() }}
<p>{{ form.password.label }} {{ form.password() }}</p>
<p>{{ form.confirm.label }} {{ form.confirm() }}</p>
<p>{{ form.submit() }}</p>
</form>
Если пароли совпадают, результат выполнения кода:
ok
Пример
Давайте зададим своё сообщение об ошибке:
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import PasswordField, SubmitField
from wtforms.validators import EqualTo
app = Flask(__name__)
app.config['SECRET_KEY'] = 'abcde'
class MyForm(FlaskForm):
password = PasswordField('Password')
confirm = PasswordField('Confirm', validators=[EqualTo('password', message='Passwords must match')])
submit = SubmitField('Send')
@app.route('/')
def index():
form = MyForm()
return render_template('index.html', form=form)
Теперь при несовпадении полей форма покажет
сообщение 'Passwords must match'.
Смотрите также
-
класс
FlaskForm,
который создаёт форму Flask -
правило
DataRequired,
которое проверяет обязательность поля -
правило
Length,
которое проверяет длину значения -
метод
validate_on_submit,
который проверяет форму при отправке