Search code examples
google-app-enginegoogle-cloud-datastoreblobstoreapp-engine-ndb

Entity images + Blobstore


I'm quite confused about how the Blobstore works alongside serving images per entity.

So let's say I have:

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

How can I output this information in a jinja2 template, like this:

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

My confusion stems from my being unclear about how the Blobstore and the datastore works together. For example: How do we relate a datastore's entity to a Blobstore property (in our example, it would be relating the the cover_image blobproperty to its Book entity)?

A simplified explanation would be much appreciated. Thank you.


Solution

  • What you are looking for is get_serving_url(blob_key, size=None, crop=False, secure_url=None)

    Try this method on the blob and you will get an image url.

    Docs

    You upload the blob and you get a blobkey that you store. Imagine it like another entity's key. Then having that key you use the get_serving url and several other functions in order to serve a url, resize etc.