WTForms如何不渲染SelectField直接展示其选中项的Label文本
解决方案
方法1:模板内直接调用(无需修改表单代码)
SelectField 内置的 choices 属性本身就是存储「值-显示文本」映射的元组列表,你可以直接在模板中将其转为字典,再通过选中的 value 匹配对应 label:
{{myform.name.data}}   {{ dict(myform.fruit.choices).get(myform.fruit.data) }}
你的示例场景下以上代码会直接输出 foo Lime,符合预期效果。
方法2:表单类封装专属属性(复用性更高)
如果多处需要用到该选中文本,可以直接在表单类中封装只读属性,后续调用更简洁:
class testform(Form): name = StringField() fruit = SelectField(choices=[('1','Lemon'),('2','Lime')]) @property def fruit_label(self): return dict(self.fruit.choices).get(self.fruit.data)
模板中直接调用封装好的属性即可:
{{myform.name.data}}   {{myform.fruit_label}}
内容的提问来源于stack exchange,提问作者Bill
相关产品推荐
相关产品推荐

