プロジェクトのひな型を作成
$ 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