![]() |
1
3
无论如何,从initialize调用处理程序不是正确的方法-如果这样做,webapp也将调用原始处理程序。 相反,你有两个选择:
不管怎样,看看google/appengine/ext/webapp/ 初始化 .py,这样你就可以看到它是如何工作的。 |
![]() |
2
2
那是你的反应。向我指出框架的来源确实很有帮助。上一次我看到的源代码不在那里(只有.pyc),可能是随着sdk的新版本而改变的。对于我的情况,我认为重写wsgiapplication是正确的做法。然而,我选择了使用元类,因为它不需要我将一堆框架代码复制到我的代码中,然后修改它。这是我的解决方案: class RequestHandlerMetaclass(type): def __init__(cls, name, bases, dct): super(RequestHandlerMetaclass, cls).__init__(name, bases, dct) org_post = getattr(cls, 'post') def post(self, *params, **kws): verb = self.request.get('_method') if verb: verb = verb.upper() if verb == 'DELETE': self.delete(*params, **kws) elif verb == 'PUT': self.put(*params, **kws) else: org_post(self, *params, **kws) setattr(cls, 'post', post) class MyRequestHandler(webapp.RequestHandler): __metaclass__ = RequestHandlerMetaclass |
![]() |
Arun Kaliraja Baskaran · 元类可以有方法吗? 7 年前 |
![]() |
JanJJ · 企业架构师通过派生防止扩展元类 7 年前 |
![]() |
Kallz · 在多处理中生成单例类 7 年前 |
![]() |
DanielSank · 如何将修饰符应用于超类的方法? 11 年前 |