Flask接受boolean布尔型参数问题

2019-09-04 06:57:47   Python

Flask接受boolean布尔型参数的时候会遇到一些问题,比如很多语言的true、false都是小写,而flask本身接受参数时进行的处理会把所有输入转化为True,造成错误

原因

Flask中接收参数的时候可以定义type,于是我们可以定义type=bool,然而问题就在这里,其实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))
vien.tech版权所有,允许转载,但转载请注明出处和原文链接: https://viencoding.com/article/189
欢迎小伙伴们在下方评论区留言 ~ O(∩_∩)O
文章对我有帮助, 点此请博主吃包辣条 ~ O(∩_∩)O

猜你喜欢


评论

There are no comments yet.
未登录

登录后即可发表评论

登录或注册

亲情非友情链接