NDB key.get()给出'unicode'对象没有属性'get'错误

rat*_*aby 2 python google-app-engine app-engine-ndb

我正在从db迁移到ndb.有一个动态提供路径中图像的功能.在DB中,我将实体键(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')     
Run Code Online (Sandbox Code Playgroud)

我无法在这里找到错误.我在key.get()中传递了错误的密钥类型吗?

Tha*_*ris 8

您可以尝试以下方法:

HTML

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

导航台

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')  
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.