【发布时间】:2011-05-23 23:18:34
【问题描述】:
当我引用 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')])
我很茫然。
【问题讨论】:
-
如果我将 req.params 复制到另一个 var 然后稍后使用它,效果很好,但这似乎超级愚蠢。
-
很奇怪,那只是创建对同一个对象的另一个引用,而不是进行深层复制
-
对,我不明白。有什么奇怪的事情正在发生。
-
检查它的记录方式——我查看了 NestedMultiDict 的源代码,
getone真的不应该引起任何这样的修改。编写一个单元测试,看看你是否可以在那里重现它——如果不能,很可能是你自己的代码的微妙之处导致了这个错误