1

ユーザーが各オブジェクトの横にあるボタンをクリックして、表示されたデータストア オブジェクトの属性を変更できるようにしたいと考えています。

これを行うには、ユーザーがボタンをクリックしたときに 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") は何も返しません。

4

4 に答える 4

1

polyhedron.key には Key('Polyhedron', 1) のようなものが含まれていると思います。オブジェクトIDのみを取得するには、これを試してください:

{% for polyhedron in polyhedrons %}
    {{ polyhedron.name }}
    {{ polyhedron.color }} 
    <form action="/correction" method=post>
        <input type=submit id="{{ polyhedron.key.id() }}" name=content value="red">
        <input type=submit id="{{ polyhedron.key.id() }}" name=content value="green">
    </form>

そして、ハンドラービルドキーでもう一度:

class CorrectionHandler(webapp2.RequestHandler):
    def post(self):
        polyhedron_object = self.request.get("id")
        polyhedron__key = ndb.Key('Polyhedron', self.request.get('id'))
        polyhedron_object.color = self.request.get('content')

Polyhedron はモデル名です。

于 2013-03-07T22:26:28.573 に答える
1

HTML 属性を混乱させています。あなたがするとき:

self.request.get("foo")

「name」として「foo」を持つ HTML 要素の値を返します。したがって、HTML を次のように変更します。

<form action="/correction" method=post>
    <input type=submit name="{{ polyhedron.key.id }}" value="red">
    <input type=submit name="{{ polyhedron.key.id }}" value="green">
</form>

その後

self.request.get("123")

123 である ID の色を返します。

于 2013-03-07T22:49:52.433 に答える