Класс Field
Класс Field лежит в основе всех полей
ввода в Flask-WTF. Он определяет базовый
набор атрибутов и методов, которые наследуют
конкретные типы полей, такие как StringField,
IntegerField, BooleanField и другие.
При создании экземпляра первым параметром
передаётся имя поля, а также можно указать
метку label, описание description,
виджет widget и другие параметры.
Синтаксис
Field(label=None, validators=None, filters=(), description='', id=None, default=None, widget=None, render_kw=None, name=None, _form=None, _prefix='', _translations=None, _meta=None)
Пример
Давайте создадим простую форму с полем
StringField, которое наследуется от
класса Field:
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'
class MyForm(FlaskForm):
name = StringField('Name')
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.csrf_token }}
<p>{{ form.name.label }} {{ form.name }}</p>
<p>{{ form.submit }}</p>
</form>
Результат выполнения кода при вводе строки
'abcde' в поле:
abcde
Пример
Давайте обратимся к атрибутам поля name
и data, которые определены в классе
Field:
from flask import Flask
from flask_wtf import FlaskForm
from wtforms import StringField
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'
class MyForm(FlaskForm):
username = StringField('Username')
@app.route('/')
def index():
form = MyForm()
res = form.username.name + ' - ' + form.username.label.text
return res
Результат выполнения кода:
"username - Username"
Смотрите также
-
метод
validate,
который проверяет значение поля -
метод
process_formdata,
который обрабатывает данные из формы -
атрибут
data,
который хранит значение поля -
атрибут
errors,
который содержит список ошибок валидации