【发布时间】:2015-02-20 18:41:53
【问题描述】:
有人可以验证/更正我访问属于 ndb.Model 类的图像的方法吗?
这是我的 MainPage 处理程序:
class MainPage(webapp2.RequestHandler):
def get(self):
guestbook_name = self.request.get('guestbook_name',
DEFAULT_GUESTBOOK_NAME)
greetings_query = Greeting.query(
ancestor=guestbook_key(guestbook_name)).order(-Greeting.date)
greetings = greetings_query.fetch(10)
template_values = {
'greetings': greetings,
'guestbook_name': urllib.quote_plus(guestbook_name),
}
template = JINJA_ENVIRONMENT.get_template('index.html')
self.response.write(template.render(template_values))
这是我的 index.html 模板代码:
{% for greeting in greetings %}
<div><img src="/img?key_id={{ greeting.key.id() }}" />
</div>
{% endfor %}
这是我的图像处理程序:
class Image(webapp2.RequestHandler):
def get(self):
greeting = ndb.get(self.request.get('key_id'))
if greeting.avatar:
self.response.headers['Content-Type'] = 'image/png'
self.response.out.write(greeting.avatar)
self.response.write('it works')
else:
self.error(404)
self.response.out.write('No image')
我的想法是将图像存储在 Greeting NDB 模型中的 blob 中。然后,我尝试通过使用调用我的 Image 处理程序的 MainPage 处理程序填充主页来获取该图像。我通过我的模板传递特定的 ndb 条目键,然后从图像处理程序中的模板中检索键。然后我尝试通过使用键获取 ndb 条目来显示 blob 属性。 这是错误跟踪:
【问题讨论】:
-
使用webapp-improved.appspot.com/guide/request.html#get-data : self.request.GET('key_id'))
标签: python image google-app-engine google-cloud-datastore app-engine-ndb