python - 将 Flask 表单值转换为 int

标签 python json flask

我有一个将 personId int 发布到 Flask 的表单。但是,request.form['personId'] 返回一个字符串。为什么 Flask 不给我一个 int?

我尝试将其转换为 int,但下面的路由返回 400 或 500 错误。如何在 Flask 中将 personId 作为 int 获取?

@app.route('/getpersonbyid', methods = ['POST'])
def getPersonById():
    personId = (int)(request.form['personId'])
    print personId

最佳答案

HTTP 表单数据是一个字符串,Flask 不会收到有关客户端希望每个值是什么类型的任何信息。所以它将所有值解析为字符串。

您可以调用 int(request.form['personId']) 将 id 作为 int 获取。如果值不是 int,你会在日志中得到一个 ValueError 并且 Flask 会返回一个 500 响应。如果表单没有 personId 键,Flask 将返回 400 错误。

personId = int(request.form['personId'])

相反,您可以使用 MultiDict.get() method并通过 type=int 来获取值(如果它存在并且是 int):

personId = request.form.get('personId', type=int)

现在 personId 将设置为整数, None 如果该字段不存在于表单中或无法转换为整数。


您的示例路线也存在一些问题。

路由应该return 一些东西,否则会引发500 错误。 print 输出到控制台,它不返回响应。例如,您可以再次返回 id:

@app.route('/getpersonbyid', methods = ['POST'])
def getPersonById():
    personId = int(request.form['personId'])
    return str(personId)  # back to a string to produce a proper response

int 周围的括号在 Python 中是不需要的,在这种情况下会被解析器忽略。我假设您正在使用 View 中的 personId 值做一些有意义的事情;否则在值上使用 int() 有点毫无意义。

关于python - 将 Flask 表单值转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12551526/

相关文章:

python - 从mysql dob字段值计算python中的年龄

python - Flask + flask-restful 给出奇怪的错误

python - Docker ubuntu 20 无法安装 msodbcsql17 或 13 SQL SERVer odbc Driver 13 或 17

java - spring:从 Controller 返回 JSON 作为 ModelAndVIew

java - 字符串数组列表转 JSON

java - Git - 创建一个 JSON 文本文件,其中键值对和符号位于不同的行上,以免出现 merge 问题

python - 在 python 线程中使用 flask session

python-2.7 - Flask-Restful 支持的 API 返回 404 错误

python - mysql读取->处理->更新,针对大数据进行优化

python - 从具有级别的列表构建树