Python jinja2重定向传递参数

时间:2013-05-08 15:27:40

标签: python google-app-engine jinja2

我正在使用Google应用引擎,我希望在提交表单时重定向到带有参数的其他页面。

这是第一种形式:

<form method="post" class="form-inline pull-left">
   <div class="input-append">
     <input type="text" required name="askquestion" class="span5"/>
     <button type="submit" name="askbutton"  class="btn-u" value="askbutton">Ask</button>
   </div>
</form>

这里是后端:

askbutton = self.request.get("askbutton")
if askbutton:
  title = self.request.get("askquestion")
  self.render("makeaquestion.html",title=title)

我已经尝试了另一个:

self.redirect("/makeaquestion?title='%s'"%title)

第一个呈现新的html并传递参数,但url保持与以前相同。第二个重定向到新网址,但没有传递参数。

2 个答案:

答案 0 :(得分:2)

设置表单的action属性:

<form action="/makequestion" method="post" class="form-inline pull-left">
   <div class="input-append">
     <input type="text" required name="askquestion" class="span5"/>
     <button type="submit" name="askbutton"  class="btn-u" value="askbutton">Ask</button>
   </div>
</form>

这会将帖子请求(包含填写的数据)提交给/makequestion

答案 1 :(得分:0)

你的第二种方法:      self.redirect( “/ makeaquestion?标题= '%s' 的” %标题) 如果你从处理程序中的url中提取params,那么应该会成功:

 class HandleMakeQuestion(webapp2.RequestHandler):
    def get(self, params):
        title = self.request.get('title')
        logging.info("Title: %s" %(title))

这可能还需要处理程序路由中的一些正则表达式:

app = webapp2.WSGIApplication([('/makeaquestion([^/]+)', HandleMakeQuestion)])