|
|
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
|