0

Blobstore가 엔티티 당 이미지 제공과 함께 작동하는 방식에 대해 상당히 혼란스러워합니다.엔티티 이미지 + Blobstore

그래서 내가 가진 가정 해 봅시다 :

class Book(ndb.Model): 
    title = ndb.StringProperty() 
    cover_image = ndb.BlobProperty() 

을 어떻게 I 출력과 같은 jinja2 템플릿이 정보 :

<h1>{{title}}</h1> 
{{cover_image}} 

내 혼란 내 약 불분명 한 것이되었다 어떻게 Blob 저장소 및 데이터 저장소가 함께 작동합니다. 예를 들어 데이터 저장소의 엔터티를 Blobstore 속성과 관련시키는 방법 (이 예에서는 cover_image blob 속성을 Book 엔터티와 관련 짓고 있음)

간략한 설명은 크게 감사하겠습니다. 고맙습니다.

답변

1

당신이 찾고있는 무엇을 get_serving_url(blob_key, size=None, crop=False, secure_url=None)

이 시도입니다 메서드를 사용하면 이미지 URL을 얻을 수 있습니다.

Docs

당신은 블롭을 업로드하고 당신은 당신이 저장 blobkey를 얻을. 그것을 다른 엔티티의 키처럼 상상해보십시오. 그런 다음 해당 키를 사용하면 URL을 제공하고 크기를 조정하기 위해 get_serving URL과 몇 가지 다른 기능을 사용합니다.

0

모델에서 BlobKeyProperty를 사용하여 데이터 저장소와 BLOB 저장소 간의 참조를 유지할 수 있습니다. 자주 당신도 또한 제공하는 URL 저장할 수있는 관련 URL 얻을 필요가있는 경우

class MyContent (ndb.Model): 
    Image = ndb.BlobKeyProperty() 

그런 : 예를 들어

class MyContent (ndb.Model): 
    Image = ndb.BlobKeyProperty() 
    ImageServingURL = ndb.StringProperty() 
0

이미지를 가져 오는 데 다른 처리기를 만들 수 있습니다. 당신이하는 방식은 사용 된 프레임 워크에 달려 있습니다. 피라미드 예 (시도 및 excepts없이) : 템플릿에서

#handler /{bookid}/coverimage 
def RenderImage(request): 
    book_key = request.matchdict['bookid'] 
    book = Key(urlsafe=book_key}.get() 
    cover = book.cover_image 
    #optional rezising: 
    cover = images.resize(cover, WIDTH, HEIGHT) #or other image operations 

    response = Response(content_type="image/jpeg") 
        response.body = cover 
        return response 

:

<img src="/{{book.key.urlsafe()}}/coverimage" /> 

참고 : 당신은 모든 이미지의 속성뿐만 아니라 'cover_image'

을 일반적인 이미지 핸들러를 할 수
관련 문제