我的应用,数据存储区,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
^ ^这最后一部分是我的“响应”,只有在当前访问者提交表单后才需要出现。
答案 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
永远不会达到您的期望。
在您的代码段中,您尚未显示var7
和var9
的来源。
我确实知道post / .put表单值会自动将用户重定向到新页面
我觉得你误解了。您尚未向我们展示您的代码执行put()
或重定向的位置。 post()
处理程序不会自动执行任何操作。
你在看哪个教程?也许我们需要收紧含糊的措辞。