Amazon.co.jp ウィジェット
スポンサードリンク

2008年02月24日

TurboGears 2 (2)

ドキュメントを見ながら、TurboGears 2 のプロジェクトを作ってみた。webskill プロジェクト。

プロジェクトのひな型を作成


$ paster quickstart webskill

モデルを記述

model/news.py

from webskill.model import DBSession, metadata
from sqlalchemy import Column, Table, types, func
from sqlalchemy.orm import mapper, relation

news_table = Table("news", metadata,
    Column("id", types.Integer, primary_key=True),
    Column("display_datetime", types.DateTime, nullable=False,
           default=func.current_timestamp()),
    Column("title", types.Unicode, nullable=False),
    Column("content", types.Unicode),
    Column("is_active", types.Boolean, default=True),

    Column("created_at", types.DateTime,
           default=func.current_timestamp()),
    Column("creator", types.Unicode, default="system"),
    Column("modified_at", types.DateTime,
           onupdate=func.current_timestamp()),
    Column("modifier", types.Unicode, onupdate="system"),
    )

class NewsModel(object):

    def __init__(self, **kw):
        for key, value in kw.items():
            if key in news_table.columns.keys():
                setattr(self, key, value)


mapper(NewsModel, news_table)
model/__init__.py の末尾に1行追加

from news import *

テーブルを生成


$ paster setup-app development.ini

CRUD を作成


$ paster crud
Model 名などを聞かれるので、順に答えていくと、Controller, Form, Template のひな型が作成される。

Form, Template (list.html, show.html) を修正

モデル定義にあった形に、Form や Template を修正する。説明は省略。

Controller を記述

controller/root.py に2行追加

+ from NewsController import NewsController

class RootController(BaseController):
+     news = NewsController()

    @expose('webskill.templates.index')
    def index(self):
        from datetime import datetime
        flash(_("Your application is now running"))
        return dict(now=datetime.now())

CRUDにアクセス

http://localhost:8080/news/ にアクセスすると、News のCRUDが見られる。 tg2_news.jpg
タグ:tg2
posted by junya at 13:57 | Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。