Python 2.7 如何在python/jinja的html页面上显示图像

Python 2.7 如何在python/jinja的html页面上显示图像,python-2.7,google-app-engine,jinja2,blobstore,internal-server-error,Python 2.7,Google App Engine,Jinja2,Blobstore,Internal Server Error,我在model.py中创建了类Blog,其中有一个属性photo,它是一个BlobkeyProperty。 我的问题是如何在html页面上显示照片。。我得到的只是一把钥匙。我对Jinja和python知之甚少,所以请帮助我:) 如果我移除键.get()部分,它就会给我那张照片的blobkey 请提供帮助。这是我处理blobstore中图像的方法 1个用于提供图像的处理程序: class AvatarDownloadHandler(BaseHandler): """ Handler

我在model.py中创建了类
Blog
,其中有一个属性
photo
,它是一个
BlobkeyProperty
。 我的问题是如何在html页面上显示照片。。我得到的只是一把钥匙。我对Jinja和python知之甚少,所以请帮助我:)

如果我移除
键.get()
部分,它就会给我那张照片的
blobkey

请提供帮助。

这是我处理blobstore中图像的方法

1个用于提供图像的处理程序:

class AvatarDownloadHandler(BaseHandler):
    """
    Handler for Serve User's Avatar
    """

    def get(self):

        params = {}

        if self.request.get('id') != '':
            logging.info('loading image from id: %s' % self.request.get('id'))
            user_info = self.user_model.get_by_id(long(self.request.get('id')))
            if user_info != None:
                if user_info.picture:
                    self.response.headers['Content-Type'] = 'image/png'
                    self.response.out.write(user_info.picture)
                else:
                    self.response.headers['Content-Type'] = 'text/plain'
                    self.response.out.write('No image')
        else:
            self.response.headers['Content-Type'] = 'text/plain'
            self.response.out.write('No image ID')
class AvatarUploadHandler(BaseHandler):
    """
    Handler for Edit User's Avatar
    """
    @user_required
    def post(self):
        """ Handles upload"""

        params = {}
        if not self.user:
            return self.render_template('home.html', **params)
        if not self.form.validate():
            message = _(messages.saving_error)
            self.add_message(message, 'danger')
            return self.redirect_to('edit-profile')
        picture = self.request.get('picture')
        user_info = self.user_model.get_by_id(long(self.user_id))
        if user_info != None:
            # Transform the image
            avatar = images.resize(picture, width=200, height=200, crop_to_fit=True, quality=100)
            user_info.picture = avatar
            user_info.put()
            message = _(messages.saving_success)
            self.add_message(message, 'success')
            self.redirect_to('edit-profile')

        message = _(messages.saving_error)
        self.add_message(message, 'danger')
        return self.redirect_to('edit-profile')


    @webapp2.cached_property
    def form(self):
        f = forms.AvatarForm(self)
        return f
有了这个处理程序,那么在Jinja/HTML端,我只需使用ID参数调用下载处理程序的路由URL,即:

给定路线:

RedirectRoute('/img/', handlers.AvatarDownloadHandler, name='img-download', strict_slash=True),
JINJA/HTML使用:

<img src="/img/?id=5671617594130432">

使用get_serving_url从blob_键创建一个服务url。此服务url可用于img标记的src中。医生:非常感谢,但我不太明白(甚至从医生那里)如何准确地使用它。。!如果您能详细说明,那就太好了……)您应该在问题中添加视图中将图像发送到模板的代码。使用服务url:But
NameError:name“BaseHandler”未定义,为什么?请帮帮我
<img src="/img/?id=5671617594130432">
class AvatarUploadHandler(BaseHandler):
    """
    Handler for Edit User's Avatar
    """
    @user_required
    def post(self):
        """ Handles upload"""

        params = {}
        if not self.user:
            return self.render_template('home.html', **params)
        if not self.form.validate():
            message = _(messages.saving_error)
            self.add_message(message, 'danger')
            return self.redirect_to('edit-profile')
        picture = self.request.get('picture')
        user_info = self.user_model.get_by_id(long(self.user_id))
        if user_info != None:
            # Transform the image
            avatar = images.resize(picture, width=200, height=200, crop_to_fit=True, quality=100)
            user_info.picture = avatar
            user_info.put()
            message = _(messages.saving_success)
            self.add_message(message, 'success')
            self.redirect_to('edit-profile')

        message = _(messages.saving_error)
        self.add_message(message, 'danger')
        return self.redirect_to('edit-profile')


    @webapp2.cached_property
    def form(self):
        f = forms.AvatarForm(self)
        return f