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

Поле формы TextAreaField

Класс TextAreaField из модуля wtforms создаёт многострочное текстовое поле. В отличие от StringField, он рендерится в HTML-тег <textarea> и позволяет вводить текст с переносами строк. Первым параметром передаётся имя поля, вторым - необязательный словарь validators с валидаторами, а также другие именованные аргументы (например, label, render_kw для передачи атрибутов HTML).

Синтаксис

from wtforms import TextAreaField field = TextAreaField(label, [validators], **kwargs)

Пример

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

from flask import Flask, render_template from flask_wtf import FlaskForm from wtforms import TextAreaField, SubmitField app = Flask(__name__) app.config['SECRET_KEY'] = 'secret' class ArticleForm(FlaskForm): content = TextAreaField('Текст статьи') submit = SubmitField('Отправить') @app.route('/', methods=['GET', 'POST']) def index(): form = ArticleForm() if form.validate_on_submit(): return form.content.data return render_template('index.html', form=form)

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

<form method="post"> {{ form.csrf_token }} <p>{{ form.content.label }} {{ form.content }}</p> <p>{{ form.submit }}</p> </form>

В результате в браузере отобразится многострочное текстовое поле:

<form method="post"> <input id="csrf_token" name="csrf_token" type="hidden" value="..."> <p><label for="content">Текст статьи</label> <textarea id="content" name="content"></textarea></p> <p><input id="submit" name="submit" type="submit" value="Отправить"></p> </form>

Пример

Давайте зададим количество строк и столбцов через атрибут render_kw:

from flask import Flask, render_template from flask_wtf import FlaskForm from wtforms import TextAreaField app = Flask(__name__) app.config['SECRET_KEY'] = 'secret' class CommentForm(FlaskForm): text = TextAreaField('Комментарий', render_kw={'rows': 10, 'cols': 40}) @app.route('/', methods=['GET', 'POST']) def index(): form = CommentForm() if form.validate_on_submit(): return form.text.data return render_template('index.html', form=form)

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

<textarea id="text" name="text" rows="10" cols="40"></textarea>

Пример

Давайте добавим валидатор DataRequired, чтобы поле нельзя было оставить пустым:

from flask import Flask, render_template from flask_wtf import FlaskForm from wtforms import TextAreaField, SubmitField from wtforms.validators import DataRequired, Length app = Flask(__name__) app.config['SECRET_KEY'] = 'secret' class FeedbackForm(FlaskForm): message = TextAreaField('Сообщение', validators=[DataRequired(), Length(min=10, max=500)]) submit = SubmitField('Отправить') @app.route('/', methods=['GET', 'POST']) def index(): form = FeedbackForm() if form.validate_on_submit(): return 'Сообщение принято' return render_template('index.html', form=form)

Если отправить пустую форму, сработает валидатор и пользователь увидит ошибку. Результат выполнения кода при успешной отправке:

"Сообщение принято"

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

  • класс Form,
    который создаёт форму из полей
  • метод validate_on_submit,
    который проверяет отправку и валидность формы
  • поле StringField,
    которое создаёт однострочное текстовое поле
  • валидатор DataRequired,
    который требует обязательного заполнения поля
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить