我尝试将元组列表传递给模板系统,包括实体密钥。但是,传递给模板的键看起来像是一个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 - < / p>
答案 0 :(得分:0)
由于您使用的是原始数据库而不是ndb。 key
是一种方法 - 正如您可以从值中看到的那样,它表示“绑定方法Product.key ...”。你需要打电话给它:
items.append((prod[i].name, prod[i].key(), someList[i]))
答案 1 :(得分:0)
我建议您在网址中使用NDB API提供的网址安全编码字符串,因为与原始密钥相比,它更优雅。
因此,您可以通过以下方式创建它:
items.append((prod[i].name, prod[i].key.urlsafe(), someList[i]))
在处理程序中,您可以根据编码的urlsafe字符串重建Key:
my_key = ndb.Key(urlsafe=your_encoded_string)
有关详细信息,请查看NDB Key class。