WTForms支持输入readonly属性?

时间:2012-03-07 10:17:37

标签: python html forms wtforms readonly-attribute

Here they say it's not supported out of the box.

您是否知道如何使HTML输入表单字段使用' readonly'属于WTForms?

2 个答案:

答案 0 :(得分:19)

我假设你在讨论HTML / XHTML中的<input readonly>属性,这不是你所链接的讨论主题。 (链接的线程是关于如何忽略传递的表单输入的低级问题)

设置readonly属性(实际上是字段上的任何属性)的方法是在模板中作为keyword-arg。如果使用Jinja,这看起来像(html5):

{{ form.myfield(readonly=true) }}

对于XHTML或早于0.6.3的WTForms版本:

{{ form.myfield(readonly="readonly") }}

请注意,'readonly'属性只是浏览器的一个提示,它对用户提交的内容没有任何影响。也就是说,恶意用户(或使用带有自定义JS浏览器或者JS控制台或DOM树的浏览器的用户)可以生成更改字段值的POST请求,无论是否设置了readonly属性输入标签。

出于这个原因,readonly属性仅用作修改用户体验的选项(例如,使用JS禁用基于某些事件/操作的字段),来自“readonly”字段的输入不再信任比任何其他形式的输入。

答案 1 :(得分:14)

解决方案是在表单字段声明中使用render_kw

my_field = fields.StringField('Label', render_kw={'readonly': True})