1

我试图将元组列表传递给模板系统,包括实体键。但是,传递给模板的键看起来像是一个 url 编码的字符串。如何解决问题?谢谢。

看法:

items = []
for i in range(50):
  if prod[i]:
      items.append((prod[i].name, prod[i].key, someList[i]))
  else
      items.append((None, None, otherList[i]))

html模板:

{% for item in items %}
   ...
   <img src="/image?entity_id={{item.1}}" />
   ...
{% endfor %}

图像请求中的实体键结果如下:

/GET /image?entity_id=%3Cbound%20method%20Product.key%20of%20%3Cmodel.Product%20object%20at%200xad63f2c%3E%3E HTTP/1.1" 404 -

4

2 回答 2

0

由于您使用的是原始 db 库而不是 ndb。key是一种方法 - 正如您从值中看到的那样,它表示“绑定方法 Product.key ...”。你需要调用它:

items.append((prod[i].name, prod[i].key(), someList[i]))
于 2012-12-19T15:29:25.547 回答
0

我建议在您的 URL 中使用 NDB API 提供的 url 安全编码字符串,因为它比原始密钥更优雅。

因此,您可以通过以下方式创建它:

items.append((prod[i].name, prod[i].key.urlsafe(), someList[i]))

在您的处理程序中,您可以根据编码的 urlsafe 字符串将 Key 重构为:

my_key = ndb.Key(urlsafe=your_encoded_string)

有关更多信息,您可以查看NDB Key 类

于 2012-12-19T16:49:29.540 回答