仅针对会话的GqlQuery结果?

时间:2012-06-19 22:04:23

标签: google-app-engine gql gqlquery

我的应用,数据存储区,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  

^ ^这最后一部分是我的“响应”,只有在当前访问者提交表单后才需要出现

2 个答案:

答案 0 :(得分:1)

我强烈建议您浏览Getting Started,尤其是templates部分,直到您了解其工作原理为止。

但是如果你只是想看看你的例子,请尝试这个(read more):

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>")

也永远不要在GAE应用程序中使用print,而是使用logger进行调试等等。

答案 1 :(得分:1)

如果要为调试目的而发出值,特别是在写入<html>标记之前需要的值时,请尝试

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

否则,浏览器可能会感到困惑。

来自处理程序的

print永远不会达到您的期望。

在您的代码段中,您尚未显示var7var9的来源。

我确实知道post / .put表单值会自动将用户重定向到新页面

我觉得你误解了。您尚未向我们展示您的代码执行put()或重定向的位置。 post()处理程序不会自动执行任何操作。

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