Вопрос

Возможно ли, чтобы некоторые из новых атрибутов использовались только в HTML5 внутри WTForms?

Например, предположим, что вы хотите создать TextField с обязательным атрибутом placeholder="foo" и атрибутами autofocus.Как это сделать в WTForms?

В html это будет выглядеть так: <input maxlength="256" name="q" value="" placeholder="foo" autofocus required>

Обратите внимание, что placeholder="foo" легко сделать в WTForms.autofocus и required, поскольку они не имеют значения,... ну, насколько я видел, не поддерживаются в WTForms.

Может ли WTForms это поддерживать?

Это было полезно?

Решение

Возможно, вам потребуется создать собственный виджет.

Обратите внимание на документы по пользовательским виджетам.

Другие советы

В WTForms 1.0, выпущенном вчера, компактный синтаксис HTML5 теперь используется по умолчанию.Теперь вы можете сделать (в дзиндзя):

{{ form.field(autofocus=true, required=true, placeholder="foo") }}

Обратите внимание, что в Jinja литерал равен true вместо True, но если вы попробуете это в консоли Python, вам нужно будет использовать литерал Python True, чтобы это работало.

В WTForms 0.6.x, который использовал XHTML в качестве вывода по умолчанию, вы могли бы сделать, например

{{ form.field(autofocus="autofocus", required="required", placeholder="foo" }}

Это рекомендуемый способ представления логических атрибутов в XHTML, и он по-прежнему является 100% действительным HTML5 и полностью эквивалентен, хотя сгенерированный HTML немного более подробный.

Я новичок в WTForms, но мне кажется, что решение можно улучшить вместо использования:

{{ form.field(autofocus=true, required=true, placeholder="foo") }}

использовать :

{% if field.flags.required %}
   {{ field(autofocus=true, required=field.flags.required, placeholder="foo") }}
{% else %}
   {{ field(autofocus=true, placeholder="foo") }}
{% endif %}

WTForms, похоже, неправильно обрабатывает required=false для 100% HTML5 и устанавливает в HTML атрибут required="False" вместо удаления атрибута.Можно ли это улучшить в следующей версии WTForms?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top