Правило Length
Правило Length применяется к полю формы
и проверяет длину введённой строки. Первым
параметром передаётся минимальная длина, вторым -
максимальная. Если длина строки не попадает
в указанный диапазон, валидация завершается ошибкой.
Синтаксис
Length(min=-1, max=-1, message=None)
Пример
Давайте проверим, что длина строки находится в диапазоне от 2 до 5 символов:
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import Length
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'
class MyForm(FlaskForm):
text = StringField('Text', validators=[Length(min=2, max=5)])
submit = SubmitField('Send')
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm()
res = None
if form.validate_on_submit():
res = form.text.data
return render_template('index.html', form=form, res=res)
Шаблон для вывода формы:
{{ res }}
{% endif %} <-jinja+>
Если ввести 'abcde', форма пройдёт валидацию
и результат выполнения кода будет:
abcde
Пример
Давайте зададим только минимальную длину без верхней границы:
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import Length
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'
class MyForm(FlaskForm):
text = StringField('Text', validators=[Length(min=3)])
submit = SubmitField('Send')
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm()
res = None
if form.validate_on_submit():
res = form.text.data
return render_template('index.html', form=form, res=res)
Если ввести 'hello', форма пройдёт валидацию
и результат выполнения кода будет:
hello
Пример
Давайте выведем сообщение об ошибке, если длина строки не попадает в диапазон:
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import Length
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'
class MyForm(FlaskForm):
text = StringField('Text', validators=[
Length(min=2, max=5, message='Length must be from 2 to 5')
])
submit = SubmitField('Send')
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm()
res = None
if form.validate_on_submit():
res = form.text.data
return render_template('index.html', form=form, res=res)
Шаблон для вывода ошибок:
Если ввести 'a', форма не пройдёт валидацию
и результат выполнения кода будет:
Length must be from 2 to 5
Смотрите также
-
правило
DataRequired,
которое проверяет, что поле не пустое -
правило
InputRequired,
которое проверяет наличие ввода в поле -
правило
EqualTo,
которое сравнивает значения двух полей -
правило
Regexp,
которое проверяет строку по регулярному выражению