WTForms ... HTML, автофокус? - PullRequest
9 голосов
/ 27 июля 2010

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

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

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

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

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

Ответы [ 3 ]

24 голосов
/ 02 марта 2012

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

{{ 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 немного более многословен.

3 голосов
/ 19 апреля 2012

Я новичок в 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?

0 голосов
/ 27 августа 2010

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

Ознакомьтесь с документами для пользовательских виджетов .

...