【发布时间】:2010-12-03 21:53:10
【问题描述】:
我正在尝试理解文档Using the Images Python API,但我对如何获取密钥和显示头像感到困惑。
文档说Image 处理程序将提供来自/img 路径的图像。
我对这个Image 处理程序的作用感到困惑。我在下面评论如何理解它;请纠正。谢谢:
class Image (webapp.RequestHandler):
def get(self):
#get the key of the image "img_id" from datastore
#what is the value of "img_id"? Where does it come from?
#how does the app engine know to get what key for which image?
greeting = db.get(self.request.get("img_id"))
#what is greeting.avatar?
#is it img_id.avatar ?
#I assume "avatar" refers to the "avatar" property in the model
if greeting.avatar:
self.response.headers['Content-Type'] = "image/png"
#does this display the avatar?
#I thought the img tag displayed the avatar
self.response.out.write(greeting.avatar)
else:
self.error(404)
非常感谢您的帮助。
更新(回复:Gabi Purcaru 的回答)
再次感谢您的明确答复。我有一个查询显示这样的用户 cmets:
for result in results:
self.response.out.write("<li>")
self.response.out.write("<b>%s</b> %s " % (result.userName, result.userLatestComment))
self.response.out.write("</li>")
self.response.out.write("</ol></body></html>")
所以,我从MainPage handler复制带有图像标签的行
self.response.out.write("<div><img src='img?img_id=%s'></img>" % greeting.key())
改变
greeting.key()
到
result.key()
我认为,现在应该在用户评论旁边显示头像:
for result in results:
self.response.out.write("<li>")
self.response.out.write("<b>%s</b> %s " % (result.userName, result.userLatestComment))
self.response.out.write("<div><img src='img?img_id=%s'></img>" % result.key())
self.response.out.write("</li>")
self.response.out.write("</ol></body></html>")
但还是不清楚为什么result.key()是我要显示的图片的key?
【问题讨论】:
-
img_id 的值是数据存储键,指定特定 Image 对象在数据存储中的精确位置。 code.google.com/appengine/docs/python/datastore/keyclass.html 使用此键执行 get 将检索问候语(如果存在)。
-
@kevpie:谢谢。应用引擎如何知道
img_id进入这一行greeting = db.get(self.request.get("img_id"))? -
这不是 blobstore。这是数据存储中的一个 blob。您需要非常仔细地阅读有关 Blobstore 的文档。恐怕你混淆了这两个概念。
标签: python google-app-engine blobstore