1

我的应用程序、Datastore、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 表单值到 Datastore 会自动将用户重定向到新页面

我想你误会了。您还没有向我们展示您的代码在哪里执行put()或重定向。一个post()也不会自动执行。

你在看哪个教程?也许我们需要收紧模糊的措辞。

于 2012-06-20T05:40:25.410 回答