python - WTF BooleanField 设置自定义值
问题描述
我有以下内容:
表格.py:
student_account = BooleanField('student_account')
索引.html
{{ form.student_account.label() }} {{ form.student_account(class="form-control") }}
此代码生成以下 html:
<input id="student_account" name="student_account" type="checkbox" value="y">
如何将值设置为 1 而不是 'y'?为什么实际上突然间有一个“y”作为值?
解决方案
'y' 是value
wtforms 中布尔输入属性的默认值。
根据基本输入小部件的文档字符串
默认情况下,
_value()
将在关联字段上调用该方法以提供value=
HTML 属性。
BooleanField
的_value方法是
def _value(self):
if self.raw_data:
return text_type(self.raw_data[0])
else:
return "y"
render_kw
如果你真的想要一个不同的值,你可以通过在字段的参数中设置它来覆盖它:
foo = BooleanField('bar', render_kw={'value': '1'})
或者通过继承BooleanField
和覆盖它的_value
方法。
通常覆盖这个值并没有太大的好处。wtforms 在构造时会自动将值转换为布尔值form.data
。
from wtforms import Form, BooleanField
from werkzeug.datastructures import MultiDict
class MyForm(Form):
b = BooleanField('MyBool')
f = MyForm(formdata=MultiDict({'b': 'y'})
f.data
{'b': True}
f = MyForm(formdata=MultiDict({})
f.data
{'b': False}
推荐阅读
- javascript - 当我在 React 中更改回选项卡时,无法读取未定义的属性“0”
- javascript - 使用模式中的属性来计算 Mongoose 中特定模式的属性值
- python - 如何在python中通过Xpath获取div之间的文本
- java - FitNesse 不调用重载方法
- odoo-14 - Odoo14 | 找不到唯一 ID base.user_admin 的记录
- php - 传递给 (Symfony) Response::setContent() 的参数必须是字符串类型或 null,给定对象
- mongodb - Mongodb聚合按$match选择记录并在满足查询时包括其他记录?
- typescript - 如何提示该函数检查变量是否未定义?
- serial-port - 在Linux Uart(串行通信)中,我们可以改变数据包之间的时间间隔吗
- jenkins - Jenkins:如何通过脚本使用 ssh publickey 配置初始管理员?