python - 为什么我的表单反序列化为 Mutlidict 字符串而不是烧瓶中的整数
问题描述
我从 html 页面发送表单,一些(但不是全部)输入似乎是字符串而不是整数。此表单有 60 多个输入。
我可以手动将每个数字输入转换为我的 dict 中的 int,但我不知道要转换的所有输入名称。
我有一个烧瓶模板
<!doctype html>
<form class="form-inline" method="POST" action="{{ url_for('result') }}">
<div>
<p>nb_ref</p>
<input type="number" name="nb_ref" value=1>
</div>
<div>
<p>type_client</p>
<input type="text" name="type_client" value="P">
</div>
...more inputs removed for clarity
<button type="submit" class="btn">Go</button>
</form>
我在这里输出响应
@app.route("/result", methods=['GET', 'POST'])
def result():
error = None
select = request.form.to_dict()
pp(select)
这给了我我的日志
{'SST_si_second_devis': '0',
...more items removed for clarity
'nb_ref': '1',
'type_client': 'P'}
我希望有一个输出字典如下
{'SST_si_second_devis': 0,
...more items removed for clarity
'nb_ref': 1,
'type_client': 'P'}
编辑:
此处问题的解决方案Cast Flask form value to int需要我事先知道哪个输入实际上是字符串或整数,但事实并非如此
解决方案
如果可能,您可以遍历所有这些并转换为int
。
for key, val in select.items():
try:
select[key] = int(val)
except ValueError:
pass
推荐阅读
- html - 如何正确渲染 React.js - 不渲染
- python - 根据另一个字段中的选择显示/隐藏 django 管理表单字段
- jquery - 如何在 jquery 中获取标签的值?
- c# - 如何获取表格单元格的前一个节点
- regex - 打印html标签的开始
- javascript - Angular 4 - 如何解析模板中的连字符变量以进行 Karma 测试?
- python - 通过合并其他列并根据以前的列名重命名,向 pandas 数据框添加新列
- gitlab - 如何通过 API curl 将组添加到 gitlab 中的项目?
- ios - 调用方法 reloadData()
- python - 这个给定的文本是 json 格式。因为我是 python 新手,所以告诉我如何只从用户那里获取 id