flask-peeweeの管理サイトを動かしてみる

flask-peeweeの提供する管理サイトがtwitter bootstrapを使っていて綺麗だったので、
サンプルを作って動かしてみました。


flask

軽量webframework。rubyでいうsinatra
http://flask.pocoo.org/

peewee

ORマッパーの一種。軽量。djangoと似たインターフェース
http://charlesleifer.com/docs/peewee/

flask-peewee

flask と peeweeとを統合するレイヤーを提供する
http://charlesleifer.com/docs/flask-peewee/

twitter-bootstrap

twitter謹製のcssフレームワーク
http://twitter.github.com/bootstrap/


以下コード
app.py

import datetime
from flask import Flask, render_template
from flaskext.auth import Auth
from flaskext.admin import Admin, ModelAdmin
from flaskext.db import Database
from peewee import TextField, DateTimeField, CharField

# configure our database
DATABASE = {
    'name': 'flask_peewee_sample.db',
    'engine': 'peewee.SqliteDatabase',
}
DEBUG = True
SECRET_KEY = '**********************'

app = Flask(__name__)
app.config.from_object(__name__)

db = Database(app)

# model
class Post(db.Model):
    title = CharField()
    entry = TextField()
    created = DateTimeField(default=datetime.datetime.now)

# for admin site
class PostAdmin(ModelAdmin):
    columns = ('title', 'entry', 'created',)

auth = Auth(app, db)
admin = Admin(app, auth)
admin.register(Post, PostAdmin)
auth.register_admin(admin)
admin.setup()

if __name__ == '__main__':
    auth.User.create_table(fail_silently=True)
    Post.create_table(fail_silently=True)

    app.run()

実行時にテーブルが作成されます。
が、ログインするユーザーが無いので作る必要があります
インタプリタを開いて作成します

from app import auth
admin = auth.User(username='admin', admin=True, active=True)
admin.set_password('admin')
admin.save()

以下にアクセスしてログインできます
http://127.0.0.1:5000/admin/

簡単でいいですね