Как я могу передать изображение из магазина блогов в шаблон python в Google App Engine? - PullRequest
0 голосов
/ 08 марта 2012

{% для результата в результатах%}

{{result.photo}}

{% endif%}

Это явно не будет работать, но я не могу найти информациюо том, как загрузить фотографию.В консоли администратора я вижу, что я успешно загрузил изображение в blobstore, теперь как я могу отправить его как в шаблон моего веб-приложения?

Я могу показать описание, делающее это.* {% для результата в результатах%}

{{result.description}}

{% endif%}

Но я не знаю, как заставить GAE читать файл изображения какimage.

Любая помощь будет принята с благодарностью.Спасибо всем!

Ответы [ 2 ]

2 голосов
/ 08 марта 2012

В вашем шаблоне должен быть тег <img> с атрибутом src, который содержит URL-адрес, который обслуживается вашим приложением и доставляет данные для изображения.Например, предположим, что вы храните изображения в модели с именем Image:

class Image(db.Model):
    filename = db.StringProperty()  # The name of the uploaded image
    mime_type = db.StringProperty() # The mime type.
    content = db.BlobProperty()     # The bytes of the image

    def load(id):
        # Load an entity from the database using the id. Left as an
        # exercise...

    def link_id_for(self):
        "Returns an id that uniquely identifies the image"
        return self.key().id()

В коде контроллера / обработчика запросов, который отображает страницу, содержащую изображение, вы должны передать идентификатор, возвращаемый link_id_for к шаблону, и шаблон будет иметь ваш тег изображения, что-то вроде этого:

<img src="/images/show/{{image_id}}">

У вас будет обработчик запросов, который обрабатывает запросы на /images/show/id.Вы должны использовать id , чтобы вывести сущность Image из хранилища данных и отправить его обратно в ответ, что-то вроде этого:

found_image = Image.load(id)

response.headers['Content-Type'] = str(found_image.mime_type)
response.out.write(found_image.content)

Очевидно, вам придется адаптироватьподробности кода в вашей текущей структуре приложения и соглашениях, но в этом суть: используйте тег img с src, который указывает на ваше приложение;ваше приложение включает в себя обработчик запроса, который доставляет байты и заголовок Content-Type.

2 голосов
/ 08 марта 2012

Я написал учебник по этой теме.Прочтите его, и если у вас есть какие-либо конкретные проблемы, напишите здесь.http://verysimplescripts.blogspot.com/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...