我有一个将 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/