当前位置: 首页 > 面试题库 >

将Flask表单值转换为int

公西翼
2023-03-14
问题内容

我有一个表格,personId可以向Flask发送一个int值。但是,request.form['personId']返回一个字符串。Flask为什么不给我一个整数?

我尝试将其强制转换为int,但是下面的路由返回了400或500错误。如何获得personIdFlask中的int类型?

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

问题答案:

HTTP表单数据是一个字符串,Flask不会收到有关客户端将每个值指定为哪种类型的任何信息。因此,它将所有值解析为字符串。

您可以调用int(request.form['personId'])以获取ID作为一个整数。如果该值不是int,则ValueError日志中将得到一个,并且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

intPython中不需要括号,在这种情况下解析器将忽略括号。我假设您正在使用personId视图中的值做有意义的事情;否则,使用int()该值将毫无意义。



 类似资料:
  • 问题内容: 我想从HTML表单中获取输入,并以JSON格式提供输出。选择多个值时,它们不会转换为JSON数组,仅使用第一个值。 : : 如果为所有者选择了多个值,“ thor”和“ flash”,则输出仅显示一个值: 我希望拥有者成为清单: 如何在不丢失列表值的情况下将表单显示为JSON? 问题答案: 是一个。遍历multidict仅返回每个键的第一个值。要获取包含值列表的字典,请使用。 为了保持

  • 问题内容: 我有一个包含两列的表: 我需要在PostgreSQL中进行某种形式的一键编码并将表转换为: 是否可以仅使用SQL?有关如何入门的任何提示? 问题答案: 如果我正确理解,则需要条件聚合:

  • 问题内容: 我有一个SQL查询返回1行,其中包含多个列标题: 有没有一种方法可以将该行转换为2列,即: 这是在SQLServer 2008 r2上运行 编辑:添加一个更好的例子 来自一个简单的 类型查询。我要显示的是: 问题答案: 试试这个

  • 问题内容: 我正在使用Flask和MongoDB。我正在尝试将request.form的内容转换为适合通过PyMongo保存的内容。似乎应该经常提出一些东西以提供现成的解决方案。 所以Flask给我的东西是这样的: 我希望获得的结果与此相似: 问题答案: 要牢记。

  • 问题内容: 我在互联网上找到了一种将RGB值转换为HSV值的方法。不幸的是,当值是R = G = B时,由于0/0操作,我得到的是NaN。 您是否知道Java中是否存在用于此转换的实现方法,或者当我获得0/0除法以获取正确的HSV值时该怎么办? 这是我的方法,它是根据Internet上的一些代码改编而成的: 问题答案: 我很确定您想要的是RGBtoHSB

  • 问题内容: 我有一个二维的numpy数组。此数组中的一些值为。我想使用此数组执行某些操作。例如考虑数组: 我试图每次取一行,以相反的顺序对其进行排序,以从行中获取最多3个值并取其平均值。我试过的代码是: 这不适用于包含的行。我的问题是,是否有一种快速的方法可以将2D numpy数组中的所有值都转换为零,以便我在排序和其他尝试做的事情上没有问题。 问题答案: 这应该工作: 在上述情况下,where_