blogPythonとかWSGIとかPasteな2007年11月4日Pylonsで階層的なRestControllerを書くPylonsは、コントローラーを作るときに、pasterコマンドでコードのベースを生成します。普通のコントローラーとRestなコントローラーと二種類作成できます。普通のコントローラーは、routing.pyの中で、URLへのマッピングを書きますが、Restコントローラーは、resourceメソッド一発で、CRUDに必要なマッピングをすべて設定してくれます。project用のRestコントローラーを生成してマッピングすると以下のようになります。'projects')マッピング/projects/index一覧など。/projectsGETの場合は、indexと同じ。idで指定されたprojectの編集フォームあるリソースの下に紐付くリソースも存在します。オブジェクト指向でいうとコンポジションでしょうか。projectの例で考えてみると、タスク(task)などがあるでしょう。project内のtaskについて、Restコントローラーを設定するには以下のようにします。collection_name='projects')このようにすると、projectリソースの下にtaskリソースが存在するようにマッピングされます。以下に、task用のURLがマッピングされます。Pylonsはテンプレート内で、コントローラーへのリンクを貼る場合には、WebHelperを使います。id=c.project.id)などとします。taskのように、parentを設定している場合は、以下のようになります。いう名前になりますね。ここで、指定されているproject_idは、引数で受け取れます。url_for('tasks')また、Routesがenvironに格納するwsgiorg.routing_argsからも取得できます。request.environ['wsgiorg.routing_args'][1]['project_id']多くの場合、モデルも同様の階層となるような関連となっているため、がんばれば自動化できるかもしれません。