Google应用引擎和django模板:将实体ID传递给模板引擎

时间:2013-01-22 02:03:02

标签: django google-app-engine

我有以下型号:

class Messages(db.Model):
    name: db.StringProperty()
    ...

使用Google App Engine数据存储提供的id字段作为唯一键,可以通过以下方式获取:

message = Message()
...
message.put()
...
id = message.key().id()

现在我想使用Django模板系统列出消息:

messages = db.Messages.all()
self.response.out.write(template.render('page.html', 'messages': messages))

在'page.html'中:

{% for message in messages %}
   {{message.name}}
   {{message.id}}
   ....
{% endfor %}

但是,'message.id'在上面的循环中总是为空。如何将实体ID传递给模板系统,以便我可以在网页中使用它们?感谢。

1 个答案:

答案 0 :(得分:2)

模板代码没有区别,因为您仍然需要访问the id instance-method of the key

尝试改为:

{% for message in messages %}
   {{ message.name }}
   {{ message.key.id }}
   <!-------- ^^^ -->
{% endfor %}

如果使用Jinja2模板(而不是Django模板),语法将是:

{% for message in messages %}
   {{ message.name }}
   {{ message.key().id() }}
   <!-------- ^^^^^ -->
{% endfor %}