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

Правило Email

Правило Email применяется к полю формы WTForms и проверяет, что введённое значение является корректным адресом электронной почты. Если значение не соответствует формату email, валидация завершается ошибкой, а в атрибуте errors поля появляется сообщение об ошибке. Правило принимает необязательный параметр message, в котором можно задать собственный текст ошибки.

Синтаксис

from wtforms.validators import Email Email(message=None)

Пример

Давайте создадим форму с полем email и навесим на него правило Email:

from flask import Flask, render_template, request from flask_wtf import FlaskForm from wtforms import StringField, SubmitField from wtforms.validators import Email app = Flask(__name__) app.config['SECRET_KEY'] = 'secret' class MyForm(FlaskForm): email = StringField('Email', validators=[Email()]) submit = SubmitField('Send') @app.route('/', methods=['GET', 'POST']) def index(): form = MyForm() res = None if form.validate_on_submit(): res = form.email.data return render_template('index.html', form=form, res=res)

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

<form method="post"> {{ form.hidden_tag() }} <p>{{ form.email.label }} {{ form.email }}</p> <p>{{ form.submit }}</p> </form> {% if res %} <p>{{ res }}</p> {% endif %}

Если ввести корректный адрес, например 'user@example.com', форма успешно пройдёт валидацию, и результат выполнения кода будет таким:

user@example.com

Пример

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

from flask import Flask, render_template from flask_wtf import FlaskForm from wtforms import StringField, SubmitField from wtforms.validators import Email app = Flask(__name__) app.config['SECRET_KEY'] = 'secret' class MyForm(FlaskForm): email = StringField('Email', validators=[Email()]) submit = SubmitField('Send') @app.route('/', methods=['GET', 'POST']) def index(): form = MyForm() if form.validate_on_submit(): pass return render_template('index.html', form=form)

Шаблон с выводом ошибок поля:

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

Если ввести значение 'abcde', валидация не пройдёт, и в списке ошибок появится стандартное сообщение:

['Invalid email address.']

Пример

Давайте зададим собственное сообщение об ошибке через параметр message:

from flask import Flask, render_template from flask_wtf import FlaskForm from wtforms import StringField, SubmitField from wtforms.validators import Email app = Flask(__name__) app.config['SECRET_KEY'] = 'secret' class MyForm(FlaskForm): email = StringField( 'Email', validators=[Email(message='Wrong email')] ) submit = SubmitField('Send') @app.route('/', methods=['GET', 'POST']) def index(): form = MyForm() if form.validate_on_submit(): pass return render_template('index.html', form=form)

Если ввести значение 'abcde', в списке ошибок появится наш текст:

['Wrong email']

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

  • класс Form,
    который является базой для форм WTForms
  • поле EmailField,
    которое создаёт поле ввода email
  • поле StringField,
    которое создаёт обычное строковое поле
  • правило DataRequired,
    которое проверяет, что поле не пустое
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить