你知道让 HTML 输入表单字段使用 WTForms 的 'readonly' 属性的方法吗?
问问题
25022 次
4 回答
32
解决方案是render_kw
在表单字段声明中使用。
my_field = fields.StringField('Label', render_kw={'readonly': True})
于 2017-04-04T19:08:51.520 回答
28
我假设您正在谈论<input readonly>
HTML/XHTML 中的属性,这不是您链接的讨论线程的内容。(链接的线程是关于如何忽略传递的表单输入的低级问题)
设置只读属性(实际上是字段上的任何属性)的方法是作为模板中的关键字参数。如果使用 Jinja,这看起来像 (html5):
{{ form.myfield(readonly=true) }}
对于 XHTML 或早于 0.6.3 的 WTForms 版本:
{{ form.myfield(readonly="readonly") }}
请注意,'readonly' 属性只是对浏览器的提示,它对用户提交的内容没有影响。这就是说,恶意用户(或使用带有自定义 JS 的浏览器的人 a lagreasemonkey 或 JS 控制台或 DOM 树)可能会生成 POST 请求来更改字段的值,而不管 readonly 属性是否设置在输入标签。
出于这个原因,只读属性仅用作修改用户体验的选项(例如,使用 JS 禁用基于某些事件/动作的字段),并且来自“只读”字段的输入不再可信比任何其他表单输入。
于 2012-03-24T04:27:37.573 回答
4
https://wtforms-components.readthedocs.org/en/latest/#
from wtforms import Form, DateField, TextField
from wtforms_components import TimeField, read_only
class EventForm(Form):
name = TextField('Name')
start_date = DateField('Start date')
start_time = TimeField('Start time')
def __init__(self, *args, **kwargs):
super(EventForm, self).__init__(*args, **kwargs)
read_only(self.name)
于 2015-08-24T13:05:57.140 回答
1
另一种可能性是使用隐藏字段,然后在您的视图中,您可以打印出来{{ form.field.data }}
以显示为文本。
于 2018-09-14T20:13:51.557 回答