РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
303 of 643 menu

Правило Regexp

Правило Regexp применяется к полю формы и проверяет, что введённая строка соответствует заданному регулярному выражению. Первым параметром передаётся шаблон регулярного выражения. Вторым необязательным параметром передаётся сообщение об ошибке валидации.

Синтаксис

Regexp(regex, [message])

Пример

Давайте создадим форму с полем login, которое допускает только латинские буквы и цифры:

from flask import Flask, render_template from flask_wtf import FlaskForm from wtforms import StringField, SubmitField from wtforms.validators import Regexp app = Flask(__name__) app.config['SECRET_KEY'] = 'abcde' class LoginForm(FlaskForm): login = StringField('Login', validators=[Regexp(r'^[a-zA-Z0-9]+$')]) submit = SubmitField('Send') @app.route('/', methods=['GET', 'POST']) def index(): form = LoginForm() if form.validate_on_submit(): res = form.login.data return res return render_template('index.html', form=form)

Шаблон для вывода формы:

<form method="post"> {{ form.hidden_tag() }} <p>{{ form.login.label }} {{ form.login() }}</p> <p>{{ form.submit() }}</p> </form>

Результат выполнения кода для значения 'abcde123':

"abcde123"

Пример

Давайте добавим своё сообщение об ошибке для правила Regexp:

from flask import Flask, render_template from flask_wtf import FlaskForm from wtforms import StringField, SubmitField from wtforms.validators import Regexp app = Flask(__name__) app.config['SECRET_KEY'] = 'abcde' class UserForm(FlaskForm): login = StringField('Login', validators=[ Regexp(r'^[a-z]+$', message='Only lowercase letters') ]) submit = SubmitField('Send') @app.route('/', methods=['GET', 'POST']) def index(): form = UserForm() if form.validate_on_submit(): res = form.login.data return res return render_template('index.html', form=form)

Шаблон для вывода формы и ошибок валидации:

<form method="post"> {{ form.hidden_tag() }} <p>{{ form.login.label }} {{ form.login() }}</p> {% for error in form.login.errors %} <p>{{ error }}</p> {% endfor %} <p>{{ form.submit() }}</p> </form>

Результат выполнения кода для значения 'ABCDE':

Only lowercase letters

Смотрите также

  • класс FlaskForm,
    который создаёт форму
  • правило Length,
    которое проверяет длину строки
  • правило EqualTo,
    которое сравнивает два поля
  • правило AnyOf,
    которое проверяет вхождение в список значений
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить