【问题标题】:Is there a shorter/better way to validate request params?是否有更短/更好的方法来验证请求参数?
【发布时间】:2015-09-05 12:25:24
【问题描述】:

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

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

【问题讨论】:

    标签: python validation python-2.7 flask werkzeug


    【解决方案1】:

    是的。 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
    

    【讨论】:

      猜你喜欢
      • 2010-09-15
      • 2016-10-28
      • 2013-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-06
      相关资源
      最近更新 更多