HTTP 表单数据是一个字符串,Flask 不会收到有关客户端希望每个值是什么类型的任何信息。所以它将所有值解析为字符串。
您可以调用int(request.form['personId'])
以将 id 作为 int 获取。但是,如果该值不是 int,您将ValueError
在日志中得到 a 并且 Flask 将返回 500 响应。如果表单没有personId
键,Flask 将返回 400 错误。
personId = int(request.form['personId'])
相反,您可以使用该MultiDict.get()
方法并传递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 中不需要括号,在这种情况下,解析器会忽略括号。我假设您正在personId
对视图中的值做一些有意义的事情;否则int()
在值上使用有点毫无意义。