-1

appengine、webapp2 フレームワークを使用しています。私は次のモデルを持っています:

class Match(db.Model):
    date_time = db.DateTimeProperty()
    team1 = db.StringProperty()
    team2 = db.StringProperty()
    venue = db.StringProperty()
    result = db.IntegerProperty()

クライアント側では、イベントが私の の 1 つに投稿要求をviews行い、その投稿要求に基づいて、jQuery/javascript で簡単に読み取れる json データを送信したいと考えています。

それを行う最良の方法は何ですか?

4

2 に答える 2

2

モデルで:

class DictModel(db.Model):
    def to_dict(self):
       return dict([(p, unicode(getattr(self, p))) for p in self.properties()])


class Match(DictModel):
    date_time = db.DateTimeProperty()
    team1 = db.StringProperty()
    team2 = db.StringProperty()
    venue = db.StringProperty()
    result = db.IntegerProperty()

およびビューで:

import json
self.response.out.write(json.dumps([m.to_dict() for m in matches]))
于 2012-04-06T22:05:08.580 に答える
-1

まず、古い db モジュールの代わりに、guido の ndb を使用することをお勧めします。しかし実際には、古い db モジュールと ndb の両方に解決策があります。まず、モデルをオブジェクトから json シリアライズ可能な構造に変換する必要があります。具体的には、python 辞書。

古いデータベース

dict = db.to_dict(Matchentity)

ndb

dict = Matchentity.to_dict()

これを json にシリアル化する必要があります。json では値があまり意味をなさないため、処理しなければならないプロパティがいくつかあるため、これは思ったほど簡単ではありません。新しい ndb では、 to_dict() メソッドで exlude パラメータを使用してこれらを簡単に除外できます。古いデータベースでは、モデルごとに特定のメソッドを作成することをお勧めします。次に、json.dump(dict) を使用します。これについては、ndb メーリング リストで良い議論が行われています。

于 2012-04-07T04:21:20.307 に答える