Kay Framework で Model を JSON に変換する方法

以前 Google App Engine でモデルを JSON に変換する方法を紹介しました。

この時はわざわざ simplejson のカスタム Encoder を自作していましたが、Kay Framework を使う場合はもっと簡単な方法があります。

Kay のリポジトリに置かれている最新のソースコードには、kay.dbutils.to_dict 関数が追加されています。この関数はモデルを dict に変換するためのもの。Kay で JSON を出力したい場合は、この to_dict 関数を使うと楽です。

こんな感じ。

# -*- coding: utf-8 -*-
"""
core.views
"""
from google.appengine.ext import db
from werkzeug import Response
from kay import dbutils
import simplejson

class Task(db.Model):
    name = db.StringProperty()
    done = db.BooleanProperty(default=False)
    created = db.DateTimeProperty(auto_now_add=True)

def index(request):
    tasks = Task.all()
    json = simplejson.dumps([dbutils.to_dict(task) for task in tasks])
    return Response(json, content_type="application/json")