是否有更短/更好的方法来验证请求参数?

时间:2015-06-19 13:33:32

标签: python validation python-2.7 flask werkzeug

我不断重复这样的块来验证请求参数。有没有更短/更好的方法来实现这个?

count = request.args.get('count', DEFAULT_COUNT)
if count:
    try:
        count = int(count)
    except ValueError:
        count = DEFAULT_COUNT

1 个答案:

答案 0 :(得分:4)

是。 Flask / Werkzeug Request对象的args属性是ImmutableMultiDict,它是MultiDict的子类。 MultiDict.get()方法接受type参数,该参数完全符合您的要求:

count = request.args.get('count', DEFAULT_COUNT, type=int)

以下是文档的相关部分:

  

<强> get(key, default=None, type=None)

     

如果请求的数据不存在,则返回默认值。如果提供type并且是可调用的,则应转换该值,返回   如果不可能,则提高ValueError。在这种情况下   函数将返回默认值,就像找不到值一样:

>>> d = TypeConversionDict(foo='42', bar='blub')
>>> d.get('foo', type=int)
42
>>> d.get('bar', -1, type=int)
-1