Есть ли более короткий/лучший способ проверки параметров запроса?

Я продолжаю повторять подобные блоки для проверки параметров запроса. Есть ли более короткий/лучший способ реализовать это?

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

person Srini K    schedule 19.06.2015    source источник


Ответы (1)


да. Атрибут args объекта Flask/ Объект Werkzeug Request является 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
person Zero Piraeus    schedule 19.06.2015