TurboGearsをさわってみる 1
前から気になっていたPython製のWebアプリフレームワークのTurboGearsを入れてみた。
これは、最近はやっているRuby on Railsなんかに代表される軽量なフレームワークで開発生産性の高さを売りにしている。
その設計思想として、
- DRY(Don't Repeat Yourself)原則 (同じことを繰り返さない)
- 設定より規約 (設定ファイルよりコーディング規約)
があげられる。
とりあえず簡単なToDoアプリケーションを作成してみる。
まずは、コマンドプロンプトから以下のコマンドを実行して、新しいプロジェクトを作成する。
> tg-admin quickstart pytodo
パッケージ名を聞かれるので、そのままでEnter
Enter package name [pytodo]:
ユーザ認証を使用するかどうか(たぶん)を聞かれるので、とりあえずEnter(No)
Do you need Identity (usernames/passwords) in this project? [no]
するといろいろログが表示されて、以下のフォルダ構成が作成される。(一部割愛)
[pytodo] |- [config] |- [sqlobject-history] |- [static] |- [templates] |- login.kid |- master.kid |- welcome.kid |- [tests] |- controllers.py |- json.py |- model.py [pytodo.egg-info] dev.cfg README.txt sample-prod.cfg setup.py start-pytodo.py
MVCパターンで作成されていて、モデルがmodel.py、コントローラがcontrollers.py、ビューがtemplatesモジュールに割り当てられている。
とりあえず起動してみる。起動の仕方は簡単で、start-pytodo.pyを実行するだけ。
> python start-pytodo.py
ブラウザで、http://localhost:8080 にアクセスする。
正常に画面が表示されればOK。
モデルの定義
まずは、モデルを定義する。
TurboGearsでは、モデルクラスを作って、そこから自動的にデータベース定義を作成することができる。
データベースに対するアクセスもほとんどSQLを使わない。(使えない?)モデルクラスとデータベース定義のマッピングには、SQLObjectが使われる。
ToDoタスクの属性はこんな感じ
- タイトル
- 詳細
- 作成日
これをmodel.pyに実装する。
from sqlobject import * from turbogears.database import PackageHub hub = PackageHub("pytodo") __connection__ = hub # ここから追加 class Task(SQLObject): title = StringCol(length=24) description = StringCol(length=128) date = DateCol()
SQLObjectクラスから派生してクラスを作成する。
クラスの属性は、StringColクラスなどのデータベースの型毎に用意されたクラスで作成する。
次にこのクラスからデータベースのテーブルを作成する。
作成するテーブルのDDLを以下のコマンドで確認できる。
> tg-admin sql sql CREATE TABLE task ( id INTEGER PRIMARY KEY, title VARCHAR(24), description VARCHAR(128), date DATE );
id列が主キーとして、自動的に作成されるみたい。
とりあえずこの定義でテーブルを作成する。テーブルを作成するには、以下のコマンドを実行。
> tg-admin sql create
コマンドが成功すると、dev.cfgファイルのsqlobject.dburiで指定したパスでデータベースファイルが作成される。
デフォルトでは、データベースにSQLiteを使用することになっている。