Атрибут raw_data
Атрибут raw_data принадлежит классу Field из библиотеки WTForms, которая используется во Flask для работы с формами. Этот атрибут хранит исходное значение, пришедшее из формы, в том виде, в котором оно было получено до вызова метода process_formdata и последующей валидации. Иными словами, raw_data содержит «сырые» данные, которые ещё не были преобразованы к типу поля и не прошли проверку. Атрибут особенно полезен, когда нужно получить значение напрямую из запроса, например для отладки или при написании собственной логики обработки. По умолчанию raw_data равен None, пока форма не будет отправлена и поля не получат данные.
Синтаксис
field.raw_data
Пример
Давайте создадим простую форму с одним полем и посмотрим, что содержит атрибут raw_data после отправки данных:
from flask import Flask, request, render_template
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 request.method == 'POST':
return str(form.name.raw_data)
return render_template('index.html', form=form)
Шаблон для отображения формы:
<form method="post">
{{ form.name.label }} {{ form.name() }}
<input type="submit">
</form>
Если отправить форму со значением 'abcde', результат выполнения кода будет следующим:
['abcde']
Как видим, raw_data представляет собой список, даже если поле одно. Это связано с тем, что из формы значение приходит в виде списка строк.
Пример
Давайте сравним raw_data и data после обработки поля:
from flask import Flask, request, render_template
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 request.method == 'POST':
res = {
'raw': form.name.raw_data,
'data': form.name.data
}
return str(res)
return render_template('index.html', form=form)
Шаблон остаётся прежним. При отправке значения 'hello' получим:
{'raw': ['hello'], 'data': 'hello'}
Атрибут raw_data хранит список строк, а data - уже преобразованное значение поля.
Смотрите также
-
класс
Field,
который представляет поле формы -
атрибут
data,
который хранит обработанное значение поля -
метод
process_formdata,
который обрабатывает сырые данные формы -
метод
validate,
который проверяет значение поля