我不断重复这样的块来验证请求参数。有没有更短/更好的方法来实现这个?
count = request.args.get('count', DEFAULT_COUNT)
if count:
try:
count = int(count)
except ValueError:
count = DEFAULT_COUNT
答案 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