在 Google App Engine Webapp 框架应用程序的上下文中:
我想在提供参数_method的情况下更改请求的请求动词,例如,如果POST请求带有参数_method=PUT,我需要更改请求以调用处理程序的put方法。这是为了应对prototype.js 处理PUT 和DELETE 等动词的方式(IE 的解决方法)。这是我的第一次尝试:
MyRequestHandler 类(webapp.RequestHandler): 定义初始化(自我,请求,响应): m = request.get('_method') 如果米: request.method = m.upper() webapp.RequestHandler.initialize(自我,请求,响应)
问题是,由于某种原因,每当重定向完成时,self.request.params 在调用处理方法(放置或删除)时被清空,即使它们在调用初始化时被填充。任何人都知道这是为什么?作为一种解决方法,我认为我可以在 initialize() 时间克隆参数,但是 .copy() 不起作用,我也没有找到一种方法来做到这一点。
更新:我收到了来自 Arachnid 的非常有用的回复。我最终得到的解决方案使用了元类。它在下面找到。