【问题标题】:Google Appengine I dont want to redirect pageGoogle Appengine 我不想重定向页面
【发布时间】:2014-05-08 14:11:29
【问题描述】:

我知道这很简单,但我无法成功。 我将数据添加到数据库,但单击按钮,我的页面将转到另一个页面。因为我写重定向行。但是如果我不写我的过程就行不通。我的代码是这些:

main.py

class AddWord(webapp2.RequestHandler):

    def post(self):

        word = Word()
        word.name = self.request.get("content")
        word.put()
        query_params = {'you added': word.name }

        self.redirect('/?' + urllib.urlencode(query_params))

application = webapp2.WSGIApplication([
    ('/', MainPage),
    ('/add', AddWord),

], debug=True)

我的 index.html

 <body>

        <form action="/add?" method="post">
 <div><textarea name="content" rows="3" cols="60"></textarea></div>
      <div><input type="submit" value="Send Word"></div>
    </form>

当我将我的话写到 textarea 并单击按钮时,我不想去任何地方,但我无法处理表单操作参数和其他参数。请问你能告诉我我必须做什么吗?谢谢。

【问题讨论】:

  • 如果您不进行重定向,那么当用户重新加载页面时,表单会重新提交。在大多数情况下这是不可取的。

标签: python google-app-engine


【解决方案1】:

只需在你的 def get() 上进行相同的渲染到你的 def post() 中,并应用相同的变量来重新创建包含新消息的页面。

【讨论】:

  • 所以不是 self.redirect() 我的意思是用你的 index.html 替换 self.render 但是你用 MainPage 做的,如果你想渲染而不是重定向 /跨度>
  • 但这没有任何意义。如果我这样做,我会写两次相同的代码。这不好吗?
  • 这就是 webapp2 处理程序的工作方式,您可以做多种事情来避免重复代码,例如将其放入函数中或为特定任务创建 BaseRequestHandler 并使用相同的处理程序。
  • np,针对您的具体情况的另一个提示是创建 def process_data(),它准备/渲染内容并在您的 get() 和 post() 中调用它,然后添加您的路由以指向单个处理程序.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-22
  • 2015-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-24
  • 2019-02-04
相关资源
最近更新 更多