Deform コンポーネント

Deform を扱う開発者は、少数の基本的な型のオブジェクトとそれぞれの関係を 理解する必要があります。それらの型は次の通りです:

  • スキーマノード
  • フィールドオブジェクト
  • ウィジェット

ウィジェット、フィールド、スキーマ・オブジェクトの関係

ウィジェット、フィールド、スキーマノード・オブジェクトの関係は以下の 通りです:

  • スキーマは開発者によって作成されます。 それは schema node オブジェクトのコレクションです。
  • deform.Form コンストラクタに root スキーマノードが渡された場合、 その結果は field オブジェクトになります。開発者によって再帰的に 定義されたスキーマの各ノードについて、対応する field が生成されます。
  • 結果として生じるフィールド木構造の中のそれぞれのフィールドは、 デフォルトのウィジェット型を持っています。フィールドオブジェクトの widget 属性が開発者によって直接セットされない場合、 field.widget が最初に要求されたときに、デフォルトウィジェット型の インスタンスを生成するためにプロパティが使用されます。各スキーマ型には 良識的なデフォルトが典型的に存在します; 良識的なデフォルトを見つける ことができない場合、:class:deform.widget.TextInputWidget ウィジェットが 使用されます。

Note

Colander ドキュメンテーション は Deform 開発者にとって有用なリソースです。特に schema がどのように 生成され、使用されるかの詳しい説明があります。Deform スキーマは Colander スキーマです。それらがどのように働くかについての Colander ドキュメンテーションは、同様に Deform スキーマを作成する場合にも 当てはまります。

ウィジェットは複数の schema node 型オブジェクトと関係があります。 例えば、抽象的な “TextInputWidget” は、その型として colander.String を持つスキーマノードと関連するテキストデータを テキスト入力コントロールにシリアライズさせることに責任を持つかもしれません。 その一方で、抽象的な “MappingWidget” は colander.Mapping オブジェクトをコントロールのシーケンスにシリアライズさせることに責任を 持つかもしれません。両方の場合で、シリアライズされるデータ型は、 ウィジェットが関連付けられているスキーマノード型と関係があります。

ウィジェットは field オブジェクトを通してスキーマノードと関係を 持っています。 field オブジェクトはウィジェットと schema node の両方への参照を持っています。これらの関係を図にすると、このように なります:

フィールド・オブジェクト (``field``)
     |
     |
     |----- ウィジェット・オブジェクト  (``field.widget``)
     |
     |
     \----- スキーマノード・オブジェクト (``field.schema``)