我希望我的用户能够通过单击每个对象旁边的按钮来修改显示的数据存储对象的属性。如何从index.html中的模板返回appengine数据存储对象的密钥?
为了做到这一点,我相信我需要从index.html的获得数据存储对象的ID后面,当用户点击该按钮:
从index.html的:
{% for polyhedron in polyhedrons %}
{{ polyhedron.name }}
{{ polyhedron.color }}
<form action="/correction" method=post>
<input type=submit id="{{ polyhedron.key }}" name=content value="red">
<input type=submit id="{{ polyhedron.key }}" name=content value="green">
</form>
处理程序:
class CorrectionHandler(webapp2.RequestHandler):
def post(self):
polyhedron_object = self.request.get("id")
polyhedron_object.color = self.request.get('content')
然而,self.request.get( “ID”)返回什么都没有。
谢谢!我使用db。我认为,你的答案非常接近解决方案,但是get_by_id()出现错误:“BadArgumentError:期望一个实例或迭代(,);收到165(一个unicode)。”如果我将id转换为int或long,我会得到一个'None'对象。换句话说,我不知道如何确保id在返回时有正确的类型。 –
memius
2013-03-08 14:45:17
投射到整数不应返回无。您是否正在执行以下操作:polyhedron_object = Polyhedron.get_by_id(int(polyhedron_object_key)) – 2013-03-08 16:07:43
使用'polyhedron.key.id'更改'polyhedron.key().id()'并且上面的代码可以工作。请注意,在Django模板变量中不允许使用括号。 – 2013-03-08 16:09:29