我使用谷歌应用程序引擎1.8.3 - 的Python 2.7和NDB API作为数据存储区谷歌应用程序引擎 - 更新实体
假设我有一个HTML表格中显示的实体组的列表。 我想单击个人组的名称来编辑组的信息。 这个组的关键/ ID应该是什么,我应该使用哪一个?请大家看看下面
这里是我的模型:
class Group(ndb.Model):
name = ndb.StringProperty()
description = ndb.StringProperty()
在我的html:
......
{% for group in groups %}
<tr>
<td>
<a href="/editGroup?id={{ ????????????? }}" {{ group.name}} </a>
</td>
<td>
{{ group.description}}
</td>
</tr>
{% endfor %}
......
在?????在<a>
标签里面,我应该放什么?我应该把它传回服务器? group.key? group.key.id()?或者我必须将Property to Group模型添加为groupId = ndb.IntegerProperty()
这样的关键属性?
我正在考虑使用实体的密钥,但我找不到一种方法来显示从'组'的HTML中的密钥,如group.something_to_get_the_key()
。
我能够使用group.key.id()
获得数字ID,但根据https://developers.google.com/appengine/docs/python/ndb/entities#numeric_keys 数字ID可能不是唯一的。
感谢
请注意,如果它是jinja2模板,它将需要group.key.urlsafe()和括号。 – Greg
此外,可能值得考虑使用'url_for()'而不是带有id的url路径。你需要一个'edit_group(group_id)'函数,用'@route('/ editGroup/')装饰,然后插入模板{{url_for('edit_group',group_id = group.key.id())}}'。哪个更灵活,更优雅,并且可以提供更好的路径语法。这是Flask,但我听说Django最近采用了这种路由方案。 –
patb