我想在ndb中删除数据库中的选定值,我有以下html代码:
获取房间中的数据:
班级方法:
all_rooms = Room.query().fetch()
template_values = {
'logout_url': users.create_logout_url(self.request.uri),
'rooms': all_rooms
}
template = JINJA_ENVIRONMENT.get_template('rooms.html')
self.response.write(template.render(template_values))
HTML:
{% for i in rooms %}
<br/>
<form action="/rooms" method="post">
<input type="hidden" name="roomKey" value="{{ i.key }}"/>
<input type="submit" value="Delete" name="button"/>
</form>
{{i.key}}
Room Nummber:{{ i.roomNumber }}
<br/>
{% endfor %}
以下哪个OutPuts:
Key(&#39; Room&#39;,4644337115725824)会议室:10
我将密钥传递给delete方法,该方法将来: Key(&#39; Room&#39;,4644337115725824)
如何从中检索密钥以删除值Room Value。
答案 0 :(得分:2)
使用i.key.urlsafe()
。这会将密钥转换为&#34; url safe&#34;字符串,它正是您计划使用它的位置:在网址中。
当您获得roomKey
值时,您可以通过执行ndb.Key(urlsafe=roomKey)
将其从urlsafe格式的字符串转换回ndb Key对象(请参阅this link)。
奖金提示:这将是非常不安全的代码。好的,如果这个应用程序只适合您(登录后),但对于不受信任的用户来说很危险。为什么?好吧,有人可以使用任何类型的任何对象的键来模拟HTML,然后模拟单击删除按钮。您的GAE端代码会盲目地将urlsafe字符串转换为键并删除内容。