gpt4 book ai didi

python - 如何显示来自 blobstore 的图像?

转载 作者:太空宇宙 更新时间:2023-11-04 01:41:30 25 4
gpt4 key购买 nike

我正在尝试理解文档 Using the Images Python API我很困惑如何获取 key 和显示头像。

文档说 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 的回答)

再次感谢您的明确答复。我有一个显示用户评论的查询,如下所示:

    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?

最佳答案

  1. "img_id"来自 url 的 GET 部分(类似于“www.example.com/img?img_id=12312”)。引擎为数据库中的每个模型分配一个新的唯一键。

  2. greeting.avatar是模型的头像属性,键为 img_id .所以,在某种意义上,你可以把它想象成img_id.avatar。 ,尽管从技术上讲这是不正确的。

  3. 不显示头像,只是返回头像。让我们以一个常见的图像为例,以便您更好地理解。当你写 <img src="some_link" /> , 浏览器会寻找 "some_link" ,并包含该图像。然后浏览器将从文件系统中读取图像,并将其返回给浏览器。您的处理程序所做的是更改后端部分,以便网络服务器将从数据存储(特别是 avatar 属性)而不是常规文件返回图像。浏览器和用户会将其视为常规图像。

编辑: result.key()是数据库自动给你的模型的唯一标识符。您需要“告诉它”您刚刚编写的图像处理程序,以便它知道您需要哪个特定模型头像。您可以通过设置 img_id 来做到这一点获取 url 的变量(您刚刚所做的)。

我不确定你是否理解整个.key()事物。让我解释一下:

任何数据库都需要从另一个记录中识别一个记录(在我们的例子中是模型)。这就是为什么他们会自动为数据库中插入的每条记录分配一个新的、最重要的唯一标识符(在我们的例子中是关键)。您必须为处理程序提供模型的 key 才能返回该模型的头像。

让我们举一个现实世界的例子:您是众多人中的一个。您所在国家/地区唯一识别您的方式是通过某种 SSN(社会安全号码)。在我的国家,它是一个 13 位代码(例如 1024582485008)。如果我想获得驾驶执照,我必须提供我的名字,但这还不够——我不是我的国家唯一的 Gabi Purcaru。我还必须提供我的 SSN,它会告诉我 我是谁。如果我们打个比方,您必须向处理程序提供模型的“SSN”(即 key ),以便它知道从数据库中获取哪个模型并返回它的头像。

关于python - 如何显示来自 blobstore 的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4350193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com