1

私のアプリ、データストア、webapp2、およびフォーム固有の「応答」はすべて機能しています:)しかし、前の訪問者のクエリ結果を表示せずにページをロードする必要があります。フォームを送信した後、現在のフォーム送信者のクエリ結果のみが必要です。これはセッションまたはヘッダーソリューションですか、それともこれを実現するためにGqlQueryを編集できますか?

messages = db.GqlQuery("SELECT * "
                                "FROM Visitor " 
                                "ORDER BY date DESC LIMIT 1") #obviously shows previous form submit
        for message in messages:
            if message.name == "" or message.mood == "":
                self.response.out.write("<div class='textright'>Type name and select.</div>")
                self.response.out.write("</body></html>")
            elif message.mood == "bad" and message.name != "":
                self.response.out.write("<body><html>")
                self.response.out.write("<div class='textright'>Stay the course  

^ ^この最後のセクションは、現在の訪問者がフォームを送信した後にのみ表示される必要がある私の「応答」です。

4

2 に答える 2

1

それがどのように機能するかを理解するまで、はじめに、特にテンプレートのセクションを読むことを強くお勧めします。

しかし、実際の例を見たいだけの場合は、これを試してください(続きを読む):

class Process(webapp.RequestHandler):
  def post(self):
    name = self.request.get("name")
    mood = self.request.get("mood")

    if mood == "bad" and name != "": 
      self.response.out.write("<html><body>")
      self.response.out.write("<h1>Welcome to the Internet!</h1>")
      self.response.out.write("<p>My mood is %s and my name is %s</p>" % (mood, name))
      self.response.out.write("</body></html>")
    else:
      self.response.out.write("<html><body>")
      self.response.out.write("<h1>Welcome to the Internet anyway!</h1>")
      self.response.out.write("</body></html>")

またprint、GAEアプリケーションでは絶対に使用しないでください。代わりに、デバッグなどにロガーを使用してください。

于 2012-06-19T22:40:31.887 に答える
1

デバッグ目的で値を出力する場合、特に<html>タグを書き込む前に出力する場合は、次のようにしてください。

self.response.out.write("<!-- name: %s -->" % self.request.get("name"))

そうしないと、ブラウザが混乱する可能性があります。

printハンドラーからあなたが期待するものになることは決してありません。

スニペットでは、どこから来たのかを示していませvar7var9

データストアへのpost/.putフォーム値がユーザーを新しいページに自動的にリダイレクトすることを私は理解しています

私はあなたが誤解していると思います。put()コードがどこでリダイレクトするかを示していません。ハンドラーも自動的にpost()は行いません。

どのチュートリアルを見ていますか?おそらく、漠然とした言い回しを厳しくする必要があります。

于 2012-06-20T05:40:25.410 に答える