Layout と Panel について

多数のビューやテンプレートを含む大規模なプロジェクトであれば、 おそらく多くの重複が含まれていることでしょう。ヘッダーは同じ、 フッターも同じ、沢山の CSS / JS が読み込まれている、などなど。

多くのテンプレートシステムには、テンプレート間でテンプレートの一部を共有する 方法があります。しかし、マスターテンプレートにデータを渡すにはどうすれば いいでしょうか。それをビューの中に置いてテンプレートにデータを渡すことが できますが、どの部分がビューに属し、どの部分がメインテンプレートに 属するかを知るのは困難です。そして、複数のメインテンプレートを持って いる場合におけるテストやオーバーライドのケースがあります。

ビューのような Pyramid 機構の利点の多くを持つ “Layout” と呼ばれる 形式概念を持つのは良いことだと思いませんか?

このセクションは、 Layout と “Panel” の概念について紹介します。

Layout とは

ほとんどのプロジェクトはグローバルなルックアンドフィールを持ち、 それぞれのビューはそれに差し込まれます。 ZPT ベースのシステムでは、 これは通常それぞれのビューのテンプレートをラップするための METAL を使用する メインテンプレートによって行われます。

しかし、テンプレートがあるだけでは十分ではありません。テンプレートは、 通常その中にロジックを持っており、データを必要とします。通常、それぞれの ビューがデータを渡さなければならないでしょう。後に Pyramid の レンダラーグローバル変数 は、 あるデータをすべてのレンダリングにおいて常に利用可能にするための エレガントな仕組みを提供しました。

Pyramid Layout では、これらのアイデアは一緒にされて名前が与えられます: Layout です。 Layout は、ビューテンプレートが参照することの できるテンプレートとロジックの組み合わせです。 Pyramid Layout によって、 Layout は、ヘルパーの config 機構と定義されたプラグポイントを 持つ、一級市民になりました。

より複雑なプロジェクトでは、同じサイトの異なる部分は異なるレイアウトを 必要とします。 Pyramid Layout は、アプリケーションの異なる場所での 異なるレイアウトの使用を管理するための方法を提供します。

Panel とは

あなたのプロジェクトには多くのレイアウトがあり、そして多数のビュー テンプレートがあるかもしれません。おそらく画面上の小さなボックスに対して 再利用が必要とされるでしょう。あるいは、誰か他の人のレイアウトを使用 しているなら、すべてのテンプレートをフォークせずに小さな一部分だけを 変更したいと思うかもしれません。

ZPT ではマクロがこの機能を提供します。すなわち、最低限のオーバーライド 可能性を持つ再利用可能なテンプレートのスニペットです。しかし、マクロも メインテンプレートと同じくロジックを持ち、データがテンプレートに渡される 必要があります。

Pyramid Layout は、 Panel によってこのような再利用可能なスニペットに 取り組みます。 Panel はテンプレートとロジックによって駆動される 画面上のボックスです。 Panel を作って登録しておけば、ビューテンプレートや main template の中でそれらを使うことができます。

さらに、それらを作ったり使用したりすることは、とても Pythonic で Pyramid 流のプロセスです。例えば Panel を通常の Python callable として呼び出して、それに引数を渡すことができます。 Panel の登録は、 Layout 同様、 Pyramid におけるビューの登録に非常に似ています。

目次

前のトピックへ

Pyramid Layout: Pyramid のための構成可能な UX

次のトピックへ

Pyramid Layout を使う