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

Метод populate_obj

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

Если у объекта нет атрибута с именем поля, он будет создан. Метод не выполняет валидацию - предполагается, что форма уже проверена через validate_on_submit или validate.

Синтаксис

form.populate_obj(obj)

Пример

Давайте создадим форму с полем name и перенесём её данные в объект User:

from flask import Flask, render_template from flask_wtf import FlaskForm from wtforms import StringField, SubmitField from wtforms.validators import DataRequired app = Flask(__name__) app.config['SECRET_KEY'] = 'abcde' class MyForm(FlaskForm): name = StringField('Name', validators=[DataRequired()]) submit = SubmitField('Send') class User: pass @app.route('/', methods=['GET', 'POST']) def index(): form = MyForm() user = User() if form.validate_on_submit(): form.populate_obj(user) return user.name return render_template('index.html', form=form)

Шаблон для вывода формы:

<form method="post"> {{ form.hidden_tag() }} <p>{{ form.name.label }} {{ form.name() }}</p> <p>{{ form.submit() }}</p> </form>

После отправки формы со значением 'abcde' результат выполнения кода:

abcde

Пример

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

from flask import Flask, render_template from flask_wtf import FlaskForm from wtforms import StringField, IntegerField, SubmitField from wtforms.validators import DataRequired app = Flask(__name__) app.config['SECRET_KEY'] = 'abcde' class MyForm(FlaskForm): login = StringField('Login', validators=[DataRequired()]) age = IntegerField('Age') submit = SubmitField('Send') class Profile: pass @app.route('/', methods=['GET', 'POST']) def index(): form = MyForm() profile = Profile() if form.validate_on_submit(): form.populate_obj(profile) res = profile.login + ' ' + str(profile.age) return res return render_template('index.html', form=form)

Шаблон для вывода формы:

<form method="post"> {{ form.hidden_tag() }} <p>{{ form.login.label }} {{ form.login() }}</p> <p>{{ form.age.label }} {{ form.age() }}</p> <p>{{ form.submit() }}</p> </form>

После отправки формы со значениями 'user' и 25 результат выполнения кода:

user 25

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

  • класс FlaskForm,
    который представляет форму Flask
  • метод validate_on_submit,
    который проверяет отправку и валидность формы
  • метод validate,
    который выполняет валидацию формы
  • атрибут data,
    который хранит очищенные данные формы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить