Поле формы HiddenField
Класс HiddenField создаёт скрытое поле формы.
Такое поле не отображается в браузере, но его значение
отправляется на сервер вместе с остальными полями.
Первым параметром передаётся подпись поля, а именованные
параметры задают значение по умолчанию, валидаторы
и другие настройки.
Синтаксис
HiddenField(label, [default], [validators])
Пример
Давайте создадим форму со скрытым полем и выведем его значение после отправки:
from flask import Flask, render_template, request
from flask_wtf import FlaskForm
from wtforms import HiddenField, SubmitField
app = Flask(__name__)
app.config['SECRET_KEY'] = 'abcde'
class MyForm(FlaskForm):
token = HiddenField('Token', default='abcde')
submit = SubmitField('Send')
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm()
res = None
if form.validate_on_submit():
res = form.token.data
return render_template('index.html', form=form, res=res)
Шаблон для вывода формы и результата:
<form method="post">
{{ form.hidden_tag() }}
{{ form.submit() }}
</form>
{% if res %}
<p>{{ res }}</p>
{% endif %}
Результат выполнения кода после отправки формы:
abcde
Пример
Скрытые поля часто применяются для передачи
идентификатора записи. Давайте передадим user_id:
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import HiddenField, StringField, SubmitField
app = Flask(__name__)
app.config['SECRET_KEY'] = 'abcde'
class UserForm(FlaskForm):
user_id = HiddenField('User ID', default='user')
name = StringField('Name')
submit = SubmitField('Save')
@app.route('/', methods=['GET', 'POST'])
def index():
form = UserForm()
res = None
if form.validate_on_submit():
res = form.user_id.data
return render_template('index.html', form=form, res=res)
Шаблон для вывода формы:
<form method="post">
{{ form.hidden_tag() }}
{{ form.name() }}
{{ form.submit() }}
</form>
{% if res %}
<p>{{ res }}</p>
{% endif %}
Результат выполнения кода после отправки формы:
user
Смотрите также
-
класс
FlaskForm,
который является основой для создания форм -
метод
hidden_tag,
который выводит скрытые поля формы -
атрибут
data,
который хранит значение поля после отправки -
поле
StringField,
которое создаёт обычное текстовое поле