0

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

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

编辑:webapp2

4

3 回答 3

2

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

在 Django 中(例如):你通常有一个至少需要 1 个参数的函数,即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来捏造它:它看起来很合理。如果您正在使用路线注释,老实说我不确定您在做什么,但这可能会做到这一点。

于 2013-05-23T05:29:02.030 回答
0

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

protected void doGet(HttpServletRequest request, HttpServletResponse response){
    request.getRequestDispatcher("/newurl").forward(request, response);
}
于 2013-05-23T04:59:54.520 回答
0

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

于 2013-05-23T04:51:02.367 回答