Поле формы URLField
Поле URLField применяется к классу формы
Flask-WTF и создаёт текстовое поле для ввода
URL-адреса. При валидации проверяется, что введённое
значение является корректным URL. Первым параметром
передаётся подпись поля, а именованными параметрами
задаются дополнительные настройки: validators,
default, render_kw и другие.
Синтаксис
URLField(label, [validators], [default], [render_kw])
Пример
Давайте создадим простую форму с полем для ввода сайта и выведем её на странице:
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import URLField, SubmitField
from wtforms.validators import DataRequired
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'
class SiteForm(FlaskForm):
url = URLField('Site', validators=[DataRequired()])
submit = SubmitField('Send')
@app.route('/', methods=['GET', 'POST'])
def index():
form = SiteForm()
res = None
if form.validate_on_submit():
res = form.url.data
return render_template('index.html', form=form, res=res)
Теперь создадим шаблон для отображения формы:
<form method="post">
{{ form.csrf_token }}
<p>{{ form.url.label }} {{ form.url }}</p>
<p>{{ form.submit }}</p>
</form>
{% if res %}
<p>{{ res }}</p>
{% endif %}
После отправки корректного адреса, например
https://code.mu, на странице появится
введённое значение.
Пример
Давайте проверим, как поле реагирует на некорректный URL. Валидация вернёт ошибку, если значение не является URL-адресом:
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import URLField, SubmitField
from wtforms.validators import DataRequired
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'
class SiteForm(FlaskForm):
url = URLField('Site', validators=[DataRequired()])
submit = SubmitField('Send')
@app.route('/', methods=['GET', 'POST'])
def index():
form = SiteForm()
if form.validate_on_submit():
res = form.url.data
else:
res = form.url.errors
return render_template('index.html', form=form, res=res)
При вводе строки 'abcde' в списке ошибок
появится сообщение о неверном URL.
Смотрите также
-
класс
Form,
который является базой для всех форм -
валидатор
DataRequired,
который проверяет, что поле не пустое -
поле
StringField,
которое создаёт обычное текстовое поле -
поле
EmailField,
которое создаёт поле для ввода email