如何将布尔数据发布到 Flask 路由

Posted

技术标签:

【中文标题】如何将布尔数据发布到 Flask 路由【英文标题】:How do I POST boolean data to Flask route 【发布时间】:2022-01-22 03:55:07 【问题描述】:

我想将一个名为 manual 的变量传递给 Flask 一个路由,然后它会根据 POST 表单数据中的值做一些事情。但是表单数据在烧瓶中被解释为string,即使我以字典形式发送它。

这是代码

@app.route("/result", methods= [ 'POST', 'GET'])
def result():
    manual = request.form.get("manual")
    if manual is None:
            return "manual is required"

这是我发送数据的方式

r = requests.get('http://127.0.0.1:5000/result'
                 ,data=manual':False)

我知道我可以做类似的事情;

if manual == 'True'

但我不想比较字符串,我想以标准方式进行比较。

谢谢

【问题讨论】:

你还在发布你的数据吗?它看起来像一个 get 请求,在这种情况下,变量在 URL 中传递,默认情况下将是一个字符串 我也想看看返回的响应,所以我使用requests.get() 【参考方案1】:

首先,发出 POST 请求,而不是 GET:

r = requests.post('http://127.0.0.1:5000/result', json='manual': False)

然后(未经测试):

@app.route("/result", methods=['POST'])
def result():
    json_data = flask.request.json
    manual = json_data.get("manual")
    if manual is None:
            return "manual is required"

查看文档了解详情:More complicated POST requests。

注意使用data参数和json参数是有区别的。需要注意的重要一点是 Content-Type 标头的存在:

在请求中使用json参数会改变Content-Type 在 application/json 的标头中。

【讨论】:

以上是关于如何将布尔数据发布到 Flask 路由的主要内容,如果未能解决你的问题,请参考以下文章

Flask URL Route:将所有其他 URL 路由到某个函数

基于子域路由的 Flask 应用程序

如何在不上传 favicon 文件的情况下将 favicon 添加到 Google colab 上的 Flask 路由?

如何将属性与 Spring XML 中 Apache Camel 路由中的(布尔)文字进行比较?

flask的路由

Flask的路由,视图和相关配置