Как добавить атрибут, содержащий дефис в поле WTForms

Вызов объекта поля WTForms создает поле rendered, и любые аргументы принимаются как атрибуты, например.

form.field(attribute='value')

вернет что-то вроде

<input attribute='value'>

Как я могу добавить атрибуты пользовательских данных HTML5, такие как данные, которые содержат дефисы, что делает их невозможными в python как аргумент одного ключевого слова?

Ответ 1

Создайте словарь с соответствующими парами ключ-значение и используйте ** для передачи его в полевой вызов:

attrs = {'data-provide': "foo"}
form.field(**attrs)

Изменить: Похоже, комментарий @NiklasB должен быть частью ответа: Для тех, кто использует flask с flask-WTF, используйте: {{ form.field( **{'data-provide': 'foo'} ) }} в вашем шаблоне.

Ответ 2

Не нужно использовать такой словарь в вызове функции form.field. ** распаковывает словарные элементы в именованные параметры для функции, поэтому просто добавьте параметры:

{{form.field(data-обеспечить = 'foo')}}

Но сделайте это ПОСЛЕ любых необходимых параметров для этого поля. Другими словами, зачем распаковать словарь прямо там, когда вы можете просто добавить параметры?