HTTP 表单数据是一个字符串,Flask 不会接收有关客户端希望每个值是什么类型的任何信息。因此它将所有值解析为字符串。
您可以致电int(request.form['personId'])
获取 int 形式的 id。如果该值不是 int,你会得到一个ValueError
在日志中,Flask 将返回 500 响应。如果表格没有personId
key,Flask 会返回 400 错误。
personId = int(request.form['personId'])
相反,您可以使用MultiDict.get() method http://werkzeug.palletsprojects.com/datastructures/#werkzeug.datastructures.MultiDict.get并通过type=int
获取该值(如果存在且为 int):
personId = request.form.get('personId', type=int)
Now personId
将被设置为整数,or 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()
关于价值有点毫无意义。