РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
343 of 643 menu

Метод process_formdata

Метод process_formdata применяется к экземпляру поля Field и вызывается автоматически, когда WTForms получает данные из формы. Первым параметром передаётся список значений valuelist, полученных из запроса. Метод преобразует сырые строки в нужный тип данных и сохраняет результат в атрибут data.

По умолчанию базовый метод просто записывает первое значение из списка в data. В дочерних классах, например IntegerField или BooleanField, метод переопределяется для приведения значения к соответствующему типу.

Синтаксис

def process_formdata(self, valuelist): # обработка данных

Пример

Давайте создадим собственное поле, которое переводит строку в верхний регистр при обработке данных формы:

from flask import Flask, render_template, request from wtforms import Form, Field app = Flask(__name__) app.secret_key = 'secret' class UpperField(Field): def process_formdata(self, valuelist): if valuelist: self.data = valuelist[0].upper() else: self.data = '' class MyForm(Form): text = UpperField('Text') @app.route('/', methods=['GET', 'POST']) def index(): form = MyForm(request.form) res = '' if request.method == 'POST' and form.validate(): res = form.text.data return render_template('index.html', form=form, res=res)

Шаблон для вывода формы и результата:

<form method="post"> {{ form.text() }} <input type="submit"> </form> <p>{{ res }}</p>

Если отправить в поле строку 'abcde', результат выполнения кода будет:

ABCDE

Пример

Давайте обработаем список значений и сохраним его в атрибут data как список:

from flask import Flask, render_template, request from wtforms import Form, Field app = Flask(__name__) app.secret_key = 'secret' class ListField(Field): def process_formdata(self, valuelist): if valuelist: self.data = valuelist else: self.data = [] class MyForm(Form): items = ListField('Items') @app.route('/', methods=['GET', 'POST']) def index(): form = MyForm(request.form) res = [] if request.method == 'POST' and form.validate(): res = form.items.data return render_template('index.html', form=form, res=res)

Шаблон с полем множественного выбора:

<form method="post"> <select name="items" multiple> <option value="a">a</option> <option value="b">b</option> <option value="c">c</option> </select> <input type="submit"> </form> <p>{{ res }}</p>

Если выбрать варианты 'a' и 'b', результат выполнения кода будет:

['a', 'b']

Смотрите также

  • класс Field,
    который представляет поле формы
  • метод process_data,
    который обрабатывает данные из объекта формы
  • атрибут data,
    который хранит обработанное значение поля
  • атрибут raw_data,
    который хранит исходные данные из формы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить