【问题标题】:Posting from one RequestHandler to another in App Engine在 App Engine 中从一个 RequestHandler 发布到另一个
【发布时间】:2011-09-28 18:51:40
【问题描述】:

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

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

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

【问题讨论】:

  • dataProcessor 需要成为 RequestHandler 有什么原因吗?如果只是 pageGenerator 内部调用的一些代码,不是更简单吗?

标签: python google-app-engine webapp2


【解决方案1】:

听起来你把事情复杂化了。考虑只使用一个通用方法来显示可以在不同情况下调用的表单:

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() 来完成相同的事情。

【讨论】:

  • 表单是一个评论框,它依赖于帖子数据来确定评论的内容(如果这是编辑,则为评论的关键)。因为提交表单也是一个发布操作,所以我创建了一个不同的处理程序来接收请求。验证函数在第二个处理程序中,希望将用户送回第一个处理程序,但需要包含提交的数据和被评论对象的键。
  • @Hank 这些都不会降低这个答案的有效性 - 您仍然可以调用两个处理程序用于该功能的通用方法(在基类上)或函数。这是一种更简单、更便携的方法。
  • 谢谢大家。我会努力的。我以前在我的应用程序中使用继承时遇到过麻烦,但我刚开始弄乱它,它似乎正在工作。
猜你喜欢
  • 1970-01-01
  • 2016-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-23
  • 1970-01-01
  • 2015-08-12
相关资源
最近更新 更多