Атрибут data
Атрибут data принадлежит классу Field из модуля wtforms и доступен у каждого поля формы. Он содержит значение, которое было передано в форму и успешно прошло валидацию и приведение типа. В отличие от raw_data, где хранятся сырые строки из запроса, data хранит уже обработанное значение: целое число для IntegerField, список для SelectMultipleField и так далее. Если валидация не прошла, в data окажется значение по умолчанию или None.
Синтаксис
field.data
Пример
Давайте создадим простую форму с одним полем и выведем его data после отправки:
from flask import Flask, request
from wtforms import Form, StringField
app = Flask(__name__)
class MyForm(Form):
name = StringField('Name')
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm(request.form)
if form.validate():
return form.name.data
return 'invalid'
Результат выполнения кода для поля name=abcde:
abcde
Пример
Давайте посмотрим, как data приводит строку к числу в IntegerField:
from flask import Flask, request
from wtforms import Form, IntegerField
app = Flask(__name__)
class MyForm(Form):
age = IntegerField('Age')
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm(request.form)
if form.validate():
return str(form.age.data + 1)
return 'invalid'
Результат выполнения кода для поля age=41:
42
Как видно из примера, в data лежит уже целое число 41, а не строка '41', поэтому с ним можно работать как с числом.
Пример
Давайте выведем data всех полей формы в шаблоне через Jinja:
from flask import Flask, request, render_template
from wtforms import Form, StringField, IntegerField
app = Flask(__name__)
class MyForm(Form):
name = StringField('Name')
age = IntegerField('Age')
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm(request.form)
if form.validate():
return render_template('index.html', form=form)
return 'invalid'
Файл шаблона:
<p>{{ form.name.data }}</p>
<p>{{ form.age.data }}</p>
Результат выполнения кода для полей name=abcde и age=25:
<p>abcde</p>
<p>25</p>
Смотрите также
-
класс
Field,
которому принадлежит данный атрибут -
атрибут
raw_data,
который хранит сырые данные из формы -
метод
process_formdata,
который заполняет атрибут data из данных формы -
метод
validate,
который проверяет значение поля перед использованием data