Поле формы TelField
Поле формы TelField применяется внутри класса формы
для создания поля ввода телефонного номера. Оно наследуется
от StringField и по умолчанию использует тип
tel при отображении в HTML. Первым параметром
передаётся подпись поля, которая выводится рядом с полем
ввода. Значением поля всегда является строка, поэтому
дополнительное преобразование типов не требуется.
Синтаксис
TelField(label, [validators])
Пример
Давайте создадим простую форму с полем для телефона:
from flask import Flask, render_template, request
from wtforms import Form, TelField, SubmitField
app = Flask(__name__)
app.config['SECRET_KEY'] = 'abcde'
class PhoneForm(Form):
phone = TelField('Phone')
submit = SubmitField('Send')
@app.route('/', methods=['GET', 'POST'])
def index():
form = PhoneForm(request.form)
if request.method == 'POST':
return form.phone.data
return render_template('index.html', form=form)
Шаблон для вывода формы:
<form method="post">
{{ form.phone.label }}
{{ form.phone }}
{{ form.submit }}
</form>
Результат выполнения кода в HTML:
<label for="phone">Phone</label>
<input id="phone" name="phone" type="tel" value="">
<input id="submit" name="submit" type="submit" value="Send">
Пример
Давайте добавим валидатор DataRequired, чтобы поле
не оставалось пустым:
from flask import Flask, render_template, request
from wtforms import Form, TelField, SubmitField
from wtforms.validators import DataRequired
app = Flask(__name__)
app.config['SECRET_KEY'] = 'abcde'
class PhoneForm(Form):
phone = TelField('Phone', [DataRequired()])
submit = SubmitField('Send')
@app.route('/', methods=['GET', 'POST'])
def index():
form = PhoneForm(request.form)
if request.method == 'POST' and form.validate():
return form.phone.data
return render_template('index.html', form=form)
Шаблон для вывода формы и ошибок:
<form method="post">
{{ form.phone.label }}
{{ form.phone }}
{% for error in form.phone.errors %}
<p>{{ error }}</p>
{% endfor %}
{{ form.submit }}
</form>
Если отправить форму с пустым полем, результат выполнения кода будет содержать сообщение об ошибке:
<p>This field is required.</p>
Если отправить форму со значением '+1 234 567 89 00',
результат выполнения кода будет следующим:
"+1 234 567 89 00"
Смотрите также
-
поле
StringField,
от которого наследуется TelField -
поле
EmailField,
которое создаёт поле для ввода email -
поле
URLField,
которое создаёт поле для ввода адреса сайта -
валидатор
DataRequired,
который проверяет, что поле не пустое