Проверьте необязательные значения с помощью Colander

Я использую Colander для проверки параметры запроса для веб-сервера Pyramid. Например:

class MySchema(colander.MappingSchema):                                         
    first_name = colander.SchemaNode(colander.String())                               
    last_name = colander.SchemaNode(colander.String())                              

Здесь first_name и last_name являются обязательными параметрами. Если я использую missing='', то это сделает их необязательными, но они все равно будут добавлены к десериализации как пустая строка, что не очень полезно, если пользователь отправляет пустую строку.

Лучшее, что я могу придумать, это missing=None, а затем проверить None позже.

Есть ли способ пометить параметр как действительно необязательный? Это означает, что если их нет в запросе, их не должно быть и в десериализованном результате.


person Jens    schedule 21.09.2015    source источник


Ответы (1)


Я думаю, вы ищете missing=colander.drop.
Из документы:

colander.drop — представляет значение, которое будет удалено из схемы, если оно отсутствует во время десериализации. Передано как значение отсутствующего аргумента ключевого слова SchemaNode.

person matino    schedule 22.09.2015
comment
Именно то, что я искал! Спасибо. - person Jens; 22.09.2015