2013-09-05 6 views
6

私はcolanderを使用して、いくつかのWebサービスへの入力を検証(およびjsonデータの逆シリアル化)しています。空の空リストを小計でキャッチ

空リストをキャッチするための小分類スキーマにルールを追加したいと思いますが、その方法を理解できません。

今、私は次の例を持っています。f()の2つの異なるデータセットを呼び出すことを示しています。私は後が原因空eventsリスト

import colander 

def f(data): 
    class EventList(colander.SequenceSchema): 
     list_item = colander.SchemaNode(colander.Int()) 

    class Schema(colander.MappingSchema): 
     txt = colander.SchemaNode(colander.String()) 
     user = colander.SchemaNode(colander.String()) 
     events = EventList() 

    try: 
     good_data = Schema().deserialize(data) 
     print 'looks good' 
    except colander.Invalid as e: 
     print "man, your data suck" 


good_data = {'txt' : 'BINGO', 
      'user' : 'mogul', 
      'events' : [11, 22, 33]} 
f(good_data) 

bad_data = {'txt' : 'BOOM', 
      'user' : 'mogul', 
      'events' : []} 
f(bad_data) 

の提案colander.Invalid例外をトリガしたいと思いますか?

答えて

8

colander.Lengthバリデータを使用してみましたか?であなたのスキーマを変更するための

試してみてください。bad_dataこのため

events = EventList(validator=colander.Length(min=1)) 

は上げる必要があります。

Invalid: {'events': u'Shorter than minimum length 1'} 
+1

BANGを!見つけたありがとう!どこかで私はほとんどそれを試してみましたが、ちょうどそれを得ることができませんでした。あなたがそれを必要とするときに寄付ビールボタンはどこですか? – mogul

関連する問題