我会为对象的 ID 使用隐藏的输入。我不确定您使用的是db.Model还是ndb.Model。如果您将 db.Model 用于您的对象,我会这样做:
{% for polyhedron in polyhedrons %}
{{ polyhedron.name }}
{{ polyhedron.color }}
<form action="/correction" method=post>
<input type="hidden" name="key" value="{{ polyhedron.key().id() }}">
<input type="submit" id="{{ polyhedron.key().id() }}" name="color" value="red">
<input type="submit" id="{{ polyhedron.key().id() }}" name="color" value="green">
</form>
如果您使用的是 ndb.Model,我会这样做
{% for polyhedron in polyhedrons %}
{{ polyhedron.name }}
{{ polyhedron.color }}
<form action="/correction" method=post>
<input type="hidden" name="key" value="{{ polyhedron.key.urlsafe() }}">
<input type="submit" id="{{ polyhedron.key.urlsafe() }}" name="color" value="red">
<input type="submit" id="{{ polyhedron.key.urlsafe() }}" name="color" value="green">
</form>
如果您使用 db.Model,您的处理程序是:
class CorrectionHandler(webapp2.RequestHandler):
def post(self):
polyhedron_object_key = self.request.get("key")
polyhedron_object = Polyhedron.get_by_id(polyhedron_object_key)
polyhedron_object.color = self.request.get('color')
如果您使用的是 ndb.Model,您的处理程序是:
class CorrectionHandler(webapp2.RequestHandler):
def post(self):
polyhedron_object_key = self.request.get("key")
polyhedron_object = ndb.Key(urlsafe=polyhedron_object_key).get()
polyhedron_object.color = self.request.get('color')