2

あなたがそのようなコントローラーメソッドを持っているなら:

@expose("json")
def artists(self, action="view",artist_id=None):
    artists=session.query(model.Artist).all()
    return dict(artists=artists)

コントローラクラス内からそのメソッドを呼び出して、Python dictを取得するにはどうすればよいですか?dictのjsonでエンコードされた文字列ではなく(jsonからpython dictにデコードする必要があります)。モデルからデータを取得するための関数と、テンプレート(KID、JSON)で使用するためにそのデータをパックするための関数を作成する必要が本当にありますか?同じクラスからこのメソッドを呼び出すと、次のようになるのはなぜですか。

artists = self.artists()

メソッドがHTMLリクエストの一部として呼び出された場合にのみ適切な場合に、json文字列を取得します。私は何を逃しましたか?

4

1 に答える 1

1

私は通常、データベースにクエリを実行したり、結果を変換したりする「worker」メソッドと、必要なすべてのデコレータを備えた個別の公開メソッドを使用して、これにアプローチします。例えば:

# The _artists method can be used from any other method
def _artists(self, action, artist_id):
    artists = session.query(model.Artist).all()
    return dict(artists=artists)

@expose("json")
#@identity.require(identity.non_anonymous())
# error handlers, etc.
def artists(self, action="view", artist_id=None):
    return self._artists(action=action, artist_id=artist_id)
于 2009-01-18T00:28:06.277 に答える