2

dbからndbに移行しています。パス内の画像を動的に提供する機能があります。DBでは、エンティティkey(i.key())をimg_idとして渡し、db.get(key)を使用して画像を取得します。

NDBの場合、キー(i.key)とエンティティキー(i.key.urlsafe())を渡そうとしました。しかし、これらの両方の場合、私は'unicode'オブジェクトに属性'get'エラーがありません。

**DB:**
def get(self):
image = db.get(self.request.get('img_id'))

**HTML**
<a class="post-title" href ="{{permalink}}">{{i.content}}</a>
<img src="/img?img_id={{i.key}}"></img>

**NDB**
class ImageHandler(BlogHandler):
def get(self):
    img=self.request.get('img_id')
    image=img.get()
    if image.image:
        self.response.headers['Content-Type'] = 'image/png'
        self.response.out.write(image.image)
    else:
        self.response.out.write('No image')     

私はこれで間違いを見つけることができませんでした。key.get()のキーに間違ったタイプを渡していませんか?

4

1 に答える 1

8

次のことを試すことができます。

HTML

<a class="post-title" href ="{{ permalink }}">{{ i.content }}</a>
<img src="/img?img_id={{ i.key.urlsafe() }}"></img>

NDB

class ImageHandler(BlogHandler):
def get(self):
    img_key = ndb.Key(urlsafe=self.request.get('img_id'))
    image = img_key.get()
    if image.image:
        self.response.headers['Content-Type'] = 'image/png'
        self.response.out.write(image.image)
    else:
        self.response.out.write('No image')  

お役に立てれば。

于 2012-11-10T09:17:34.310 に答える