Поле формы SubmitField
Поле SubmitField применяется внутри класса формы
Flask-WTF и создаёт кнопку отправки формы. Первым
параметром передаётся подпись кнопки, которая отображается
пользователю. При нажатии на кнопку браузер отправляет
форму на сервер, а значение поля попадает в данные формы.
Поле наследуется от класса Field и автоматически
рендерится как HTML-тег <input type="submit">
при использовании в Jinja-шаблоне.
Синтаксис
from wtforms import SubmitField
field = SubmitField(label, [validators])
Пример
Давайте создадим простую форму с кнопкой отправки:
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import SubmitField
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'
class MyForm(FlaskForm):
submit = SubmitField('Send')
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm()
if form.validate_on_submit():
return 'Form submitted'
return render_template('index.html', form=form)
Создадим шаблон для вывода формы:
<form method="post">
{{ form.submit() }}
</form>
Результат выполнения кода в браузере:
<input id="submit" name="submit" type="submit" value="Send">
Пример
Давайте добавим к форме текстовое поле и обработаем отправку:
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'
class MyForm(FlaskForm):
name = StringField('Name', validators=[DataRequired()])
submit = SubmitField('Send')
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm()
if form.validate_on_submit():
return form.name.data
return render_template('index.html', form=form)
Создадим шаблон для вывода формы:
<form method="post">
{{ form.name.label }} {{ form.name() }}
{{ form.submit() }}
</form>
Результат выполнения кода для значения 'abcde':
abcde
Смотрите также
-
класс
Form,
который является базовым классом для форм Flask-WTF -
метод
validate_on_submit,
который проверяет отправку и валидность формы -
поле
StringField,
которое создаёт текстовое поле ввода -
поле
BooleanField,
которое создаёт флажок в форме