美文网首页
Flask接受boolean布尔型参数问题

Flask接受boolean布尔型参数问题

作者: 隐藏的下一行 | 来源:发表于2020-03-18 12:44 被阅读0次

转载自vien.tech
原文链接:https://viencoding.com/article/189

问题描述

Flask中接收参数的时候可以定义type,于是我们可以定义type=bool,但是不管传入了true还是false,得到的值都是True
问题在于,其实flask只是用bool()函数处理了一下,让我们看看bool()函数做了啥:

In [1]: bool('False')
Out[1]: True

In [2]: bool('True')
Out[2]: True

In [3]: bool('false')
Out[3]: True

In [4]: bool('true')
Out[4]: True

In [5]: bool('')
Out[5]: False

可以看出来,非空字符串都被解释成了True,这并不是我们想要的结果

解决方法

一种是使用 flask_restful 模块的 inputs.boolean 类型代替 bool

from flask_restful import inputs

locked =request.args.get('locked', None, type=inputs.boolean)

当然也可以自己写个函数来进行转换:

def to_bool_or_none(bool_str):
    if bool_str is None:
            return None
    if bool_str.lower() == "true":
        return True
    if bool_str.lower() == "false":
        return False
    raise Exception("bool str invalid.")

使用:

locked = to_bool_or_none(request.args.get('locked', None, type=str))

相关文章

网友评论

      本文标题:Flask接受boolean布尔型参数问题

      本文链接:https://www.haomeiwen.com/subject/yepqyhtx.html