浇铸Flask形状值

2024-10-01 11:32:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个表单,它将personIdint发布到烧瓶。但是,request.form['personId']返回一个字符串。为什么烧瓶不给我点颜色?

我试着将它转换为int,但下面的路由要么返回400,要么返回500错误。我怎样才能把personId作为int in Flask呢?

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

Tags: 字符串informappflask表单路由烧瓶
1条回答
网友
1楼 · 发布于 2024-10-01 11:32:54

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

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

personId = int(request.form['personId'])

相反,您可以使用^{} method并传递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

Python中不需要int周围的括号,在这种情况下,解析器会忽略它。我假设您正在对视图中的personId值执行一些有意义的操作;否则对该值使用int()有点毫无意义。

相关问题 更多 >