2011-01-14 4 views
0

は、URLから キーと「エンティティ内の列位置情報」 の2つのパラメータを受け取り、blobから配信された指定されたイメージを返して表示する汎用イメージ表示クラスを作成しようとしています。 私が間違っていることを知っているなら、私にヒントを与えてください。Google App Engine(Python):URL引数を使用してエンティティの列を指定するにはどうすればよいですか?

私は以下のようにデータストア「アイテム」を持っています。

キー| image_index |イメージ1 |イメージ2 |イメージ3 |

と私は以下のようなURLで画像を要求しています、

http://stackoverwlow.com/image/ {キー}/{image_N}

私は

def main(): 
application = webapp.WSGIApplication(
     [('/', MainPage), 
    ('/image/([^/]+)/([^/]+)', imageDisplay), 
    ], debug=True) 
wsgiref.handlers.CGIHandler().run(application) 

、以下のようなメインにURLハンドラを作りました

下記のようにimageDisplayクラスを作成しました。

from google.appengine.ext import db 
from google.appengine.ext import webapp 

class imageDisplay(webapp.RequestHandler): 

    def get(self, _key, _size): 
     image = db.get(_key) 
     self.response.headers['Content-Type'] = 'image/jpg' 
     self.response.out.write(image._size) 

しかし、私はこのコードをしようとした場合、それはエラー以下返し、

グローバル名「image_sizeでは」私はエンティティにどの画像を指定した場合

が定義されていないが、表示されるべきですできます。 したがって、データはそこにあります。

self.response.out.write(image.image3) 

私の質問は、取得したエンティティの「イメージ」から「_サイズ」を指定する方法ですか?

ありがとうございます。あなたは配列のように自分の価値観に対処しているので、あなたはおそらくかかわらず、いずれかを使用する必要があり

self.response.out.write(getattr(image, size)) 

:使用よろしく

あなたはこのように、プログラム的属性を取得する必要が

答えて

0

db.ListProperty(db.Blob)、代わりに!

+0

こんにちはニック、 self.response.out.write(GETATTR(画像サイズ))私は予想通り 作品!どうもありがとうございました。 私はdb.ListProperty(db.Blob)の使い方を理解しようとしていました。しかし、それがどのように適用できるか分からなかった。私の各エントリーには、ブロブとして保存されたいくつかの画像があります。だから、画像のどちらを使うべきかを選ぶ方法を考えてみてください。,, – soabe

+0

他のどこでもそうですが、Pythonリストを使用してください。複数のプロパティを使用するよりもはるかに良い選択です。 –

関連する問題