wtforms - 有没有一种简单的方法来抑制 WTForms 表单字段默认值?

标签 wtforms

每当我使用 WTForms 表单显示数据库中的数据时:

sql = "SELECT * FROM rolodex WHERE rolodex_id = " + rolodex_id
cursor = mdb_connect("DictCursor")
cursor.execute(sql)
row = cursor.fetchone()
form = RolodexEntry(**row)
return bottle.template('entry',rolodex_id=rolodex_id,form=form)

(所有表单字段都是文本字段)

空和 NULL 数据库字段值显示为“无”。我希望它们只是空的。我可以想出几种方法来解决这个问题,但我想知道是否有一些 WTForms 批准的方法可以将 Textfield 的默认值设置为空字符串而不是 None?

瓶子模板为我提供了一种简单但有些乏味的方法来根据具体情况解决这个问题:

<p style='font-weight: bold; color: blue; margin-left: auto; margin-right: auto; width:   50%'>
% if form.firstname.data:
  {{form.firstname.data}} 
% end 
% if form.lastname.data:
  {{form.lastname.data}}
% end
</p>

我尝试更改字段定义中的默认属性:

firstname  = TextField('First Name',[validators.length(max=40)], default="")

但这没有做任何事情;即,如果数据库中的字段为空,form.firstname.data 仍显示为 None

最佳答案

问题是由我对所有文本字段使用的 strip_filter 过滤器引起的:

strip_filter = lambda x: x.strip() if x else None

cell = TextField('Cellphone', [validators.length(max=25)],
                 filters=[strip_filter])

将带状过滤器更改为:

strip_filter = lambda x: x.strip() if x else ""

解决了这个问题。

WTForms default 使问题变得更加复杂。字段属性似乎不起作用。使用此字段定义:

cell = TextField('Cellphone', default = "Nada")

和这段代码:

row['cell'] = ""
form = RolodexEntry(**row)
return bottle.template('entry',rolodex_id=rolodex_id,form=form)

<td>{{form.cell.data}}</td> 的 HTML给出<td></td> ,不是<td>Nada</td>

关于wtforms - 有没有一种简单的方法来抑制 WTForms 表单字段默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16426767/

相关文章:

python - 具有空选项的 Flask-wtf 动态选择字段

python - 验证 Flask WTF 表单中的选择字段

python - 当 View 函数中修改表单字段的属性时,validate_on_submit 在 POST 上失败

python - Webapp2 + WTForms 问题 : How to pass values and errors back to user?

python - 如何限制用户可以上传到我的表单的文件类型?

javascript - 如何使用 flask-wtf 在 html select 的 onChange 上传递参数

python - 如何禁用 wtforms SelectField 选择验证?

javascript - 将 Leaflet Popup 值插入表单并提交

python - Flask WTForms 使用变量自动填充 StringField

python - Flask 应用仅在 wtforms 验证后提交目标 ="_blank"表单