【问题标题】:Dispatching from one webapp2.RequestHandler to another从一个 webapp2.RequestHandler 分派到另一个
【发布时间】:2013-02-09 13:44:43
【问题描述】:

有没有办法在内部将请求的处理从一个RequestHandler 子类传递给另一个子类?基本上,我想做的是,从RequestHandler(嗯,RequestHandler 的子类)的get 方法,将处理请求的任务分派给另一个处理程序(RequestHandler 的子类),其名称由从数据存储中获取的值确定(我使用的是 GAE,但这与此问题无关)。代码看起来像这样:

class Dispatcher(RequestHandler):
    def get_handler(some_id):
        handler_name = get_handler_name(some_id) # fetches from datastore/etc.
        return getattr(my_module, handler_name)

    def get(self, some_id, *args, **kwargs):
        handler = get_handler(some_id) # e.g., handler could be a HandlerA

        # Not a real function, just to describe what to do:
        # invokes get method of HandlerA (if handler == HandlerA)
        dispatch_to_handler(handler, self, *args, **kwargs) 

    def post(self, some_id):
        handler = get_handler(some_id)

        dispatch_to_handler(....) # dispatches to post method of the handler


class HandlerA(RequestHandler):
    def get(self, *args, **kwargs):
        do_stuff()

    def post(...):
        do_post_stuff()

最大的问题是我需要以某种方式将self 以及位置和关键字参数传递给另一个处理程序(本例中为 HandlerA),因为self 包含请求、响应、会话、身份验证和其他数据,HandlerA(或任何可能的处理程序)需要这些数据来处理请求。

【问题讨论】:

    标签: python webapp2


    【解决方案1】:

    试试这个方法:

    def get(self, some_id, *args, **kwargs)
        handler_cls = get_handler(some_id)
        handler = handler_cls(self.request, self.response)
        return handler.dispatch()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-18
      • 2017-02-04
      • 1970-01-01
      • 2021-06-05
      • 2011-07-15
      • 2019-08-13
      • 2013-03-18
      相关资源
      最近更新 更多