2012-03-07 3 views
1

zopeオブジェクトとrequestオブジェクトを使用すると、変数に異なる型が入ることがあります。私はこれを考慮する必要があります。要求オブジェクトを配列zopeにキャストする

docs = request.form['ID'] 

時にはドキュメントは、単一のIDです(文字列)で、他の項目には、いくつかのIDSだし、配列です。これは、文字列も繰り返し可能であるため、非常に混乱する可能性があります。

if isinstance(docs, basestring): 
    docs = [docs] 

for doc_id in docs: 
    dosomething(doc_id) 

これは機能しますが、入力変数が文字列である場合のみです。

変更されるリクエストタイプを処理するにはどうすればよいですか?おそらく私の場合、反復可能な(そして間違った)型をキャストし、残りの部分にエラーを投げたいだけです。

答えて

1

Zopeがアウトボックスリストの変換を含む、型変換をサポート:

<input type="checkbox" name="items:list" value="foo" /> Foo<br/> 
<input type="checkbox" name="items:list" value="bar" /> Bar<br/> 

ユーザは、上記の項目の一つまたは二つを確認した場合、要求中の得られたitemsエントリがされますリストに関係なく、リスト内の項目数:上記の例で

# No typechecking needed, this is a list: 
items = request.form['items'] 

は、私はこれを達成するために、接尾辞:listを用います。詳細は、Argument Conversion section of the Object Publishing chapter of the Zope dev bookを参照してください。

関連する問題