NDB key.get () дает объект «unicode», не имеет атрибута «получить» ошибку

Я перехожу с db на ndb. Существует функция динамического отображения изображений в пути. В БД я передаю ключ объекта (i.key()) как img_id и с помощью db.get(key) получаю изображение.

Для NDB я попытался передать ключ (i.key) и ключ объекта (i.key.urlsafe()) для передачи. Но в обоих этих случаях я получаю, что объект «unicode» не имеет атрибута «получить».

**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 ()?


person ratbaby    schedule 10.11.2012    source источник


Ответы (1)


Вы можете попробовать следующее:

HTML

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

НБД

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')  

Надеюсь это поможет.

person Thanos Makris    schedule 10.11.2012
comment
Большое спасибо, танос. Это очень полезно. - person ratbaby; 10.11.2012