在App Engine中从一个RequestHandler发布到另一个RequestHandler

时间:2011-09-28 18:51:41

标签: python google-app-engine webapp2

目标:使用应用引擎的基本webapp框架我想创建一个带有发布数据的新请求,以发送到另一个RequestHandler。像pageGenerator.post({'message':'the message','datum1':datum1,...}) ...

这样的东西

问题描述:一个请求处理程序,称之为pageGenerator,创建一个带有表单的页面。当用户提交表单时,帖子会转到另一个处理程序:dataProcessor。如果dataProcessor发现提交的数据存在问题,它会将提交的数据和错误消息发送到'pageGenerator`的post方法,而pageGenerator将向页面提供错误消息。

如何像这样来回传递数据(和控制)?我希望pageGenerator能够使用self.request.get('message')获取数据。

1 个答案:

答案 0 :(得分:3)

听起来你过于复杂。考虑只是有一个通用的方法来显示可以在不同情况下调用的表单:

class FormHandler(webapp.RequestHandler):

  def get(self):
    self.show_form()

  def post(self):
    if form_is_valid():
      handle_success()
    else:
      self.show_form({'feedback':'Validation failed'})

  def show_form(self, vals={}):
    vals['field1'] = self.request.get('field1')
    vals['field2'] = self.request.get('field2')
    html = template.render('form.html', vals)
    self.response.out.write(html)

如果您真的需要“显示表单”和“处理表单”处于不同的处理程序类中,您可以通过在公共父类中定义show_form()来完成相同的操作。