我想知道是否有一个pythonic等价的RequestDispatcher.forward(请求,响应),我习惯于从Java servlet编程?它是Java中常用的技术,可以让您对特定类型的请求进行一些预处理,然后交给另一个url处理程序。这一切都发生在服务器内部,这节省了大量时间。
我在GAE / Python文档中看到的最接近的东西是RequestHandler.redirect(),但那是没有希望的。首先,浏览器需要额外的往返。对于另一个,不能保证重定向一旦它从我的手中被实际跟踪,这让我有点抽搐。 (从语义上讲,这也是错误的,因为重定向意味着原始资源可能不可用或已经移动,但事实并非如此。)
在http://webapp-improved.appspot.com/api/webapp2.html#webapp2.RedirectHandler描述的webapp2中有一些听起来非常接近的东西;但是从我可以从相当粗略的文档中猜到,这只是为了做一种网址重写,这根本不是我想要的。
答案 0 :(得分:0)
我不知道GAE,但是在django你可以这样做:
def view2(request):
do_some_stuff()
def view1(request):
do_some_stuff()
view2(request) # <-- note this line
在GAE中,你可以这样做:
return View.action.__func__(self, ...)
(尽管如此,根据功能,可能会搞砸了,例如View.action
使用self.something_which_should_be_here_but_isnt_because_self_is_some_other_thing
)
答案 1 :(得分:0)
最简单的方法是将相关代码重构为从两个处理程序调用的函数,或者将函数放在基类中,两个处理程序都可以扩展。哪个更合适取决于您的应用。