python - 为什么我的表单在 Flask 中被反序列化为带有字符串而不是整数的 Mutlidict

标签 python flask deserialization

我正在从 html 页面发送表单,一些(但不是全部)输入似乎是字符串而不是整数。 此表单有 60 多个输入。

我可以手动将每个数字输入转换为字典中的 int,但我不知道要转换的所有输入名称。

我有一个 flask 模板

<!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

关于python - 为什么我的表单在 Flask 中被反序列化为带有字符串而不是整数的 Mutlidict,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57825732/

相关文章:

python - 导入librosa给 “no module named numba.decorators”,如何解决?

python - Pygame 和 IDE——源代码更改需要重新启动 python

python - 使用 SQLAlchemy 如何在使用 db.create_all() 创建数据库后填充行

java - 如何使用 xStream 反序列化多个对象

python - 使用 Queue() 在 python 分布式应用程序中共享文件

python - Selenium:使用 python 选择并迭代 <ul> 父级的直接 <li> 子元素?

javascript - 访问动态生成的 javascript 文件时遇到问题

python - 如何将所有 URL 以 "www"开头的请求重定向到裸域?

c# - 在 C# 中使用属性反序列化 XML

java - 反序列化如何定位SerialVersionUid