September 17, 2009

Repoze.bfgについて

Repoze.bfgについて
  • Pythonを利用するWebアプリケーションフレームワーク
  • WSGI対応
  • Zope 3のコンポーネントアーキテクチャを利用している
  • URL/Viewのマッピングと、セキュリティ管理の仕組みを独自実装している。Zopeより"軽い"らしい。
  • テンプレートエンジンや、データ永続化フレームワークの選択は、開発者に任されている
  • URLとViewのマッピングの方式として、Zope風のTraversalと、Pylons/Django風のURL Dispatchが選択できる(同時に利用することもできる)
  • Zopeと同様、URLに対応するViewが呼ばれる際、コンテキストオブジェクトが渡される
URL/Viewのマッピングについてもう少し。

Traversal

Zopeと同じ。オブジェクトのツリー(グラフ)を、親から子へ辿っていく方式。オブジェクト毎に、URLの階層の深さが異なる構造を扱うのに向いている。
  • 処理開始時に、root factoryからrootオブジェクトを取得(何らかの永続化データを表現するPythonオブジェクト, ZODBのrootなどを返すように実装する)
  • rootオブジェクト、及び子要素オブジェクトは、Traversingのために__getitem__メソッドを持つ必要がある
  • rootオブジェクト、及び子要素オブジェクトは、Location(パス)の特定のために、__name__、__parent__属性を持つ必要がある
  • コンテキストオブジェクトと、対応するViewの関連は、Zope3と似た書式でzcmlに記述する。例:
  • <view
         for=".models.MyModel"
         view=".views.my_view"
         />
URL Dispatch
Pylons/Djangoに似た方式。オブジェクトの種類毎に、URLの階層の深さが決まっている構造を扱うのに向いている。
  • URLパスとViewの関連を、zcmlのrouteディレクティブで記述する。例:
  • <route
         name="user"
         path="users/:user"
         view="mypackage.views.user_view"
         />
  • root factoryはNoneで良い
  • URLパスに対応するコンテキストオブジェクトを指定したい場合、routeディレクティブのfactory属性を利用する。例:
  • <route
        name="idea"
        path="ideas/:idea"
        view=".views.idea_view"
        factory=".models.Idea"
        />


matssaku at 14:28│Comments(0)TrackBack(0)clip!Zope | Python

トラックバックURL

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔