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

1 投票
1 回答
752 浏览
提问于 2025-04-17 03:17

目标:我想用应用引擎的基本网页应用框架创建一个新的请求,带上一些数据,发送给另一个请求处理器。就像这样 pageGenerator.post({'message':'消息内容','datum1':datum1,...})...

问题描述:有一个请求处理器,叫做 pageGenerator,它会生成一个包含表单的页面。当用户提交这个表单时,数据会发送到另一个处理器:dataProcessor。如果 dataProcessor 发现提交的数据有问题,它会把提交的数据和一个错误信息一起发送回 pageGenerator 的 post 方法,然后 pageGenerator 会显示带有错误信息的页面。

我该如何在这两个处理器之间传递数据(和控制)呢?我希望 pageGenerator 能通过 self.request.get('message') 获取到数据。

1 个回答

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() 来实现同样的效果。

撰写回答