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 passtype=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()
是没有意义的