如何按键删除NDB值

时间:2018-04-15 21:47:26

标签: python google-app-engine

我想在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。

1 个答案:

答案 0 :(得分:2)

使用i.key.urlsafe()。这会将密钥转换为&#34; url safe&#34;字符串,它正是您计划使用它的位置:在网址中。

当您获得roomKey值时,您可以通过执行ndb.Key(urlsafe=roomKey)将其从urlsafe格式的字符串转换回ndb Key对象(请参阅this link)。

奖金提示:这将是非常不安全的代码。好的,如果这个应用程序只适合您(登录后),但对于不受信任的用户来说很危险。为什么?好吧,有人可以使用任何类型的任何对象的键来模拟HTML,然后模拟单击删除按钮。您的GAE端代码会盲目地将urlsafe字符串转换为键并删除内容。