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

Метод populate_obj

Метод populate_obj применяется к полю формы и заполняет атрибуты указанного объекта значениями из этого поля. Первым параметром передаётся объект, в который нужно записать данные. Обычно это модель или любой другой объект с подходящими атрибутами. Метод не возвращает результат, а изменяет объект непосредственно.

Чаще всего метод используется после успешной валидации формы, когда нужно перенести очищенные данные из полей в модель перед сохранением в базу данных.

Синтаксис

field.populate_obj(obj, name)

В качестве obj выступает объект, атрибут которого нужно заполнить. Параметр name задаёт имя атрибута, в который будет записано значение поля.

Пример

Давайте создадим простое WTForms-поле и заполним им атрибут объекта:

from wtforms import StringField class User: pass user = User() field = StringField('name') field.process_data('abcde') field.populate_obj(user, 'name') print(user.name)

Результат выполнения кода:

"abcde"

Пример

Давайте заполним сразу несколько атрибутов объекта через форму:

from wtforms import Form, StringField class User: pass class UserForm(Form): name = StringField('name') city = StringField('city') form = UserForm() form.name.process_data('abcde') form.city.process_data('article') user = User() form.name.populate_obj(user, 'name') form.city.populate_obj(user, 'city') print(user.name, user.city)

Результат выполнения кода:

"abcde article"

Пример

Давайте используем populate_obj во Flask после валидации формы:

from flask import Flask, request from wtforms import Form, StringField app = Flask(__name__) class User: pass class UserForm(Form): name = StringField('name') @app.route('/', methods=['POST']) def index(): form = UserForm(request.form) if form.validate(): user = User() form.name.populate_obj(user, 'name') return user.name return 'invalid'

Результат выполнения кода для POST-запроса со значением name=abcde:

abcde

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

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