Обратите внимание, что у всех виджетов уже есть класс, названный для типа виджета (например, "строка", "целое число", "дата" и т. Д.), А также идентификатор в виде "tablename_fieldname", так что вы можетеиметь возможность использовать их в своем CSS без необходимости добавлять пользовательские классы.См. здесь для получения более подробной информации.
Если вам нужно настроить классы, обратите внимание, что объекты web2py FORM и SQLFORM и их подкомпоненты являются вспомогательными объектами HTML иможно манипулировать как любые помощники HTML.В частности, помощники действуют как списки по отношению к своим компонентам и словари по отношению к своим атрибутам (входной класс является атрибутом объекта INPUT).Таким образом, вы можете сделать что-то вроде этого, либо в контроллере, который создает форму, либо в представлении:
form.custom.widget.field_name['_class'] = 'bla bla'
Если вам нужно изменить класс всех виджетов определенного типа, вы также можете сделатьчто с помощью функции поиска .elements()
:
for input in form.elements('input', _class='string'):
input['_class'] = 'my-string'
Дополнительным параметром является явное определение виджета для поля в определении таблицы, либо с использованиемпользовательский виджет или просто передача атрибута _class
одному из встроенных виджетов:
Field('target_user', 'string', widget = lambda field, value:
SQLFORM.widgets.string.widget(field, value, _class='my-string'))
Этот метод повлияет на все формы, которые включают это поле (если вы явно не удалите или не замените виджет перед созданиемформа).