是否可以在WTForms内部使用HTML5中使用的一些新属性?
例如,假设您要创建一个带有占位符=“foo”,必需和自动聚焦属性的TextField。如何在WTForms中完成?
在html中,它看起来像这样:<input maxlength="256" name="q" value="" placeholder="foo" autofocus required>
请注意,placeholder="foo"
可以在WTForms中轻松完成。 autofocus
和required
,因为它们没有价值,所以......好吧,就我所见,在WTForms中不受支持。
WTForms可以支持吗?
答案 0 :(得分:24)
在昨天发布的WTForms 1.0中,HTML5紧凑语法现在是默认语法。现在你可以做(在jinja):
{{ form.field(autofocus=true, required=true, placeholder="foo") }}
请注意,在Jinja中,文字是true
而不是True
但是如果您要在python控制台中尝试这个,则需要使用python文字True
来实现此目的。工作
在使用XHTML作为默认输出的WTForms 0.6.x中,你可以这样做。
{{ form.field(autofocus="autofocus", required="required", placeholder="foo" }}
这是在XHTML中表示布尔属性的推荐方法,这恰好仍然是100%有效的HTML5并且完全等效,尽管生成的HTML有点冗长。
答案 1 :(得分:3)
我是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 %}
对于100%HTML5,WTForms似乎无法正确处理required=false
并在HTML中设置attr required="False"
而不是删除attr。在下一版WTForms中可以改进吗?
答案 2 :(得分:0)
您可能需要创建自定义小部件。