引用WebOb.params(UnicodeMultiDict)中的元素后,末尾的元素被弹出
当我提到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')])
我真的不知道该怎么办了。
1 个回答
2
这是因为你在设置 req.method
。可能 name=some_name
是在请求的 主体 中,只要 req.method == 'POST'
,你就能拿到这个参数。一旦你把方法改成 PUT,WebOb 就无法解析请求主体了(请求主体应该是实体,而不是 HTML 表单输入)。当你获取 req.str_params
这个属性时,就会进行这样的计算,所以通过保存参数的引用,你就避免了对 req.method 的检查。