Python 将烧瓶形状值转换为int

Python 将烧瓶形状值转换为int,python,json,flask,Python,Json,Flask,我有一个表单将personIdint发布到Flask。但是,request.form['personId']返回一个字符串。为什么Flask不给我一个int 我尝试将其强制转换为int,但下面的路由返回400或500错误。如何将personId作为一个int保存在Flask中 @app.route('/getpersonbyid', methods = ['POST']) def getPersonById(): personId = (int)(request.form['person

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

我尝试将其强制转换为int,但下面的路由返回400或500错误。如何将
personId
作为一个int保存在Flask中

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

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

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

personId = int(request.form['personId'])
相反,您可以使用and pass
type=int
来获取该值(如果该值存在且为int):

personId = request.form.get('personId', type=int)
现在
personId
将被设置为整数,或者
None
如果该字段在表单中不存在或无法转换为整数


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

路由应该返回某个内容,否则将引发500错误<代码>打印输出到控制台,它不会返回响应。例如,您可以再次返回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
Python中不需要
int
周围的括号,在这种情况下解析器会忽略它。我假设您正在使用视图中的
personId
值做一些有意义的事情;否则,对值使用
int()
是没有意义的