Атрибут widget
Атрибут widget принадлежит классу Field из модуля
wtforms и хранит объект виджета, который
отвечает за генерацию HTML-разметки поля. Виджет
определяет, как именно поле будет выглядеть в форме:
как текстовое поле, как список, как чекбокс и так далее.
При создании поля виджет можно передать параметром
widget или использовать виджет по умолчанию,
заданный в классе поля.
Синтаксис
field.widget
Пример
Давайте посмотрим, какой виджет используется у обычного текстового поля:
from wtforms import Form, StringField
class MyForm(Form):
name = StringField('Name')
form = MyForm()
res = form.name.widget
print(res)
Результат выполнения кода:
<wtforms.widgets.core.TextInput object at 0x...>
Пример
Давайте передадим собственный виджет
TextArea вместо стандартного:
from wtforms import Form, StringField
from wtforms.widgets import TextArea
class MyForm(Form):
text = StringField('Text', widget=TextArea())
form = MyForm()
res = form.text.widget
print(res)
Результат выполнения кода:
<wtforms.widgets.core.TextArea object at 0x...>
Пример
Давайте отрендерим поле с виджетом TextArea
в шаблоне:
from flask import Flask, render_template
from wtforms import Form, StringField
from wtforms.widgets import TextArea
app = Flask(__name__)
class MyForm(Form):
text = StringField('Text', widget=TextArea())
@app.route('/')
def index():
form = MyForm()
return render_template('index.html', form=form)
{{ form.text() }}
Результат выполнения кода:
<textarea id="text" name="text"></textarea>
Смотрите также
-
класс
Field,
которому принадлежит данный атрибут -
атрибут
label,
который хранит подпись поля -
атрибут
description,
который хранит описание поля -
метод
process_formdata,
который обрабатывает данные из формы