在引用WebOb.params(UnicodeMultiDict)中的元素之后,元素将从末尾弹出

时间:2011-05-23 23:18:34

标签: python wsgi webob

当我引用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 个答案:

答案 0 :(得分:2)

这是因为您正在设置req.method。可能name=some_name位于请求的正文中,只要req.method == 'POST'您将获得该参数。当您将方法更改为PUT时,您将保持WebOb不解析请求主体(请求主体应该是实体,而不是HTML表单输入)。这是在获得属性req.str_params时计算的,因此通过保存对params的引用,您将避免req.method检查。