【问题标题】:What's the Google App Engine equivalent of ASP.NET's Server.Transfer?与 ASP.NET 的 Server.Transfer 等效的 Google App Engine 是什么?
【发布时间】:2013-05-23 04:29:27
【问题描述】:

Server.Transfer 有点像重定向,只是它不是请求浏览器进行另一个页面获取,而是触发一个内部请求,使请求处理程序“转到”另一个请求处理程序。

Google App Engine 中是否有与此等效的 Python?

编辑:webapp2

【问题讨论】:

  • 你使用的是哪个 Python 框架?
  • 答案将非常具体到您使用的任何 python 请求路由打包、webapp/webapp2、flask、pyramid、bobo 等......

标签: python google-app-engine webapp2


【解决方案1】:

对于大多数 Python 框架,请求处理程序只是一个函数:我想您可以导入您想要使用的实际处理程序函数,并将您在当前处理程序函数中收到的参数传递给它。

在 Django 中(例如):你通常有一个函数,它至少需要一个参数,request 对象。您应该能够简单地导入下一个处理程序,然后返回执行它的结果。比如:

def actual_update_app_queue_settings(request):
  return HttpResponse()

def update_app_queue_settings(request):
   return actual_update_app_queue_settings(request):

对于你提到的框架,大概是这样的:

class ProductHandler(webapp2.RequestHandler):
    def get(self, product_id):
        self.response.write('You requested product %r.' % product_id)

class ProductHandler2(webapp2.RequestHandler):
    def get(self, product_id):
        nph = ProductHandler()
        nph.initialize(request, response)
        nph.get(product_id)

我通过查看http://webapp-improved.appspot.com/guide/handlers.html 来捏造这一点:它看起来很合理。如果您使用路由注释,老实说,我不确定您在做什么,但可能会这样做。

【讨论】:

    【解决方案2】:

    通常,您只需调用相应的方法即可。 为了更具体.​​..您使用的是哪种风格的 AppEngine? Java、Python、Go...Php?

    【讨论】:

      【解决方案3】:

      如果你使用的是java/servlet,那么“转发”就是

      protected void doGet(HttpServletRequest request, HttpServletResponse response){
          request.getRequestDispatcher("/newurl").forward(request, response);
      }
      

      【讨论】:

      • 问题是用 Python 标记的 :)
      • 谢谢,抱歉,忘记在问题中提及 Python。我找不到 Python 等价物。你知道有没有?
      • 我在彼得回答之后将其标记为 Python。抱歉,马虎了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多