当我引用WebOb请求的params参数时,会突然弹出一个元素。那或它被简化为单个元素。引用的元素不是被淘汰的元素。
if req.str_params.has_key('method'):
req.method = req.str_params.getone('method')
此行记录开始之前:
DEBUG:root:NestedMultiDict([('method', 'put'), ('name', 'some_name')])
后:
DEBUG:root:NestedMultiDict([('method', 'put')])
我很茫然。
答案 0 :(得分:2)
这是因为您正在设置req.method
。可能name=some_name
位于请求的正文中,只要req.method == 'POST'
您将获得该参数。当您将方法更改为PUT时,您将保持WebOb不解析请求主体(请求主体应该是实体,而不是HTML表单输入)。这是在获得属性req.str_params
时计算的,因此通过保存对params的引用,您将避免req.method检查。