[TurboGears] 複数のコントローラをパッケージにまとめる。

問題点

TurboGearsでは、新規にプロジェクトを作成すると、<プロジェクト名>/<パッケージ名>/controllers.pyというファイルが生成され、ここにRootコントローラが置かれます。しかし大規模なプロジェクトではcontrollers.pyにすべてのコントローラを記述することは難しく、関連するコントローラごとにひとつのファイルにまとめたいです。

Rapid Web Applications with TurboGears: Using Python to Create Ajax-Powered Sites (Prentice Hall Open Source Software Development Series)

Rapid Web Applications with TurboGears: Using Python to Create Ajax-Powered Sites (Prentice Hall Open Source Software Development Series)

上の本では、subcontrollersパッケージを作成するといった手法を使っていますが、できればRootコントローラがあるcontrollers.pyも含めたコントローラ専用のパッケージを作成したいです。

解決策

Rootコントローラがあるcontrollers.pyを、<プロジェクト名>/<パッケージ名>/controllersディレクトリに、root.pyとして移動します(<プロジェクト名>/<パッケージ名>/controllers/__init__.pyも作成して下さい)。次に、start-<プロジェクト名>.pyの最後にあるコードを、以下のように書き換えます。

from <パッケージ名>.controllers.root import Root

start_server(Root())