WTForms - 显示属性值而不是 HTML 字段
我想重复使用 WTForms 表单中的模板:
<th>${form.name.label}</th>
<td>${form.name()}</td>
...
但是,在我的编辑页面上,我希望输入字段正常显示(TextField
、SelectField
、等),而在我的视图页面上,我只想显示属性的值,而不是带有该值的输入字段。
编辑页面:
<th>Name:</th>
<td><input type="text" value="Current Name" name="name" id="name"/></td>
查看页面:
<th>Name:</th>
<td>Current Name</td>
我知道我可以通过 form.name.data
访问字段的值,但是有什么方法可以使用 form.name()
保留相同的模板code> 被调用并以某种方式切换是否输出 或
Current Name
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我创建了一个自定义小部件:
然后,对于我的视图页面,我添加了以下内容:
I created a custom widget:
Then, for my view page, I added the following:
莎拉的上述回答让我找到了相关问题的解决方案:如果您希望某些字段是只读的怎么办?在这种情况下,您可以定义一个新的 ROTextField 变体(例如),而不是对表单对象进行运行时手术,该变体始终呈现为纯值。例如:
现在使用 ReadOnly 属性定义您的字段:
思考这个问题帮助我更好地理解 WTForms 的工作原理。将其留在这里,以防可能帮助其他人解决相关问题。
Sarah's answer above led me to the solution to a related problem: What if you want some of your fields to be read only? In that case, instead of doing run-time surgery on the form object, you could define a new
ROTextField
variant (for example), that always renders to the pure value. For example:Now define your field with ReadOnly attributes:
Thinking about this problem helped me better understand how WTForms work. Leaving this here in case this might help someone else work through related issues.
根据 Sarah 在 WTForms-Components 中找到的答案和代码我使用以下命令快速将表单的所有字段转换为只读和禁用字段。
假设我们有一个 ProfileForm 定义如下:
定义以下类(基于 WTForms-Components 中的 ReadOnlyWidgetProxy):
现在从 ProfileForm 继承,如下所示:
Based on Sarah's answer and code found in WTForms-Components I use the following to quickly turn all a form's fields into read-only and disabled fields.
Suppose we have a ProfileForm defined as follows:
Define the following class (based on ReadOnlyWidgetProxy from WTForms-Components):
Now inherit from ProfileForm as follows: